» »

[c++]Urejanjepolja

[c++]Urejanjepolja

purki ::

Pozdravljeni. Ker sem še nevešč programiranja vas prosimza pomoč.
Potrebujem neko funnkcijo ki razširi poljubno tabelo tipa uchar in sicer: i-ti element originalne tabele se preslika na lokacijo (2*i-1) nove tabele in na lokacijo (2*i) nove tabele s tem da se mu doda vrednost 0x40. Več na slikovni predstavitvi
Ta funkcija naj sprejme kazalec na original tabelo in vrne kazalec na novo.

Hvala vsem !!
  • spremenilo: purki ()

purki ::

Anyone ? PLS help me

Gundolf ::

Definiraš funkcijo, ki vzame ene par parametrov: izvorno tabelo, ciljno tabelo in verjento še dolžino podane vhodne tabele. Znotraj funkcije pa iz prve tabele pa v eni for zanki (ki gre čez celo dolžino vhodne tabele) prebereš i-ti element in ga zapišeš na (2*i-1)-to mesto v drugi tabeli in tako dalje... :)

purki ::

To že. Problem je sledeč ker funkcija odlagaga podatke na sklad. Jaz pa bi rabil kazalec na tabelo za izhod te funkcije.

Genetic ::

Tabelo ustvari znotraj funkcije: uchar* buffer = new uchar[2*i];
New alocira memorijo na heapu.
Potem pa jo napolnis, kot je opisano in jo na koncu vrnes: return buffer;

EDIT: popravil i na 2*i

Zgodovina sprememb…

  • spremenil: Genetic ()

Gundolf ::

Ali pa kot sem že prej rekel, definiraj funkcijo ki tudi drugo tabelo vzame kot parameter.

bozjak ::

evo en kratek primer. Mislim, da je to to kar isces.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

char * zamenjaj (char tab[], int i)
{
     char * buffer = new char[2*i];;
     
     int j;
     
     for (j=0; j < i; j+=2) {
         buffer[j] = tab[j];
         buffer[j+1] = tab[j];
         printf ("%c %c", tab[j], buffer[j]);
     }
     
     return buffer;
}

int main(int argc, char *argv[])
{
    char * buffer;
    
    char tab[50];
    int i = 50;
    int j;
    
    srand(time(NULL));
    
    for (j=0; j < i; j++) {
        tab[j] = rand()%20 + 65;
        printf("%c ", tab[j]);
    } 
    
    printf("\n\n\n");
    
    buffer = zamenjaj(tab, i);
    
    printf("\n\n\n");
    
    for (j=0; j < (2 * i); j++) {
        printf("%c ", buffer[j]);
        if (j%5 == 0) printf("\n");
    }
    
    printf("\n");
    system("PAUSE");
    return EXIT_SUCCESS;
}


Prevedeno v dev-c++.

Lp
http://upor.blogec.si
http://bozjak.deviantart.com

purki ::

Compiler javi

'new' : undeclared identifier


Napaka v vrstici

char * buffer = new char[2*i];;


New je operator , on pa misli da je spremenljivka ??

jerac ::

To maš C verjetno pol ne pa C++. Namesto char * buffer = new char[2*i]; uporabi char* buffer = malloc(2*i);

purki ::

Stvar dela. Hvala vam 0:)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C osnova

Oddelek: Programiranje
221542 (1057) RunoTheDog
»

[C] Branje iz datoteke

Oddelek: Programiranje
101716 (1547) BigWhale
»

Program v C

Oddelek: Programiranje
51928 (1767) darkkk
»

osnove v Javi - zvezdice

Oddelek: Programiranje
403537 (2759) Tutankhamun
»

[C] Narascajoce sortiranje linearnega seznama

Oddelek: Programiranje
71856 (1745) Jebiveter

Več podobnih tem