Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

realloc polja[][]

[es] :: C/C++ programiranje :: C/C++ za početnike :: realloc polja[][]

[ Pregleda: 3176 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dux_cro
Zgb

Član broj: 24884
Poruke: 63
*.adsl.net.t-com.hr.



Profil

icon realloc polja[][]02.03.2007. u 08:14 - pre 207 meseci
Pozdrav,
zanima me mogu li nekako napraviti da se dvodimenzionalno polje uveća ?
znam za polje:
Code:

int *polje=NULL;
int br=0;

while(nekakvi uvjeti){
br++;
polje=(int*)realloc(polje, br*sizeof(int));
}


a kako napraviti ako imam polje[][] ??
hvala
Of all the things I have lost I miss my mind the most...
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.adsl.net.t-com.hr.

Sajt: www.dump.hr


Profil

icon Re: realloc polja[][]02.03.2007. u 08:37 - pre 207 meseci
Dvodimenzionlno polje je u biti jednodimnezionalno polje.
Ne znam sto radi realloc, pa ti ne mogu dat uputu.
 
Odgovor na temu

dux_cro
Zgb

Član broj: 24884
Poruke: 63
*.adsl.net.t-com.hr.



Profil

icon Re: realloc polja[][]02.03.2007. u 08:42 - pre 207 meseci
znam da je to jednodimenzionalno polje, al po njemu se možeš kretati sa x,y dok bi za jednodimenzionalno (dakle polje[]) morao kretati sa x+MAXRED ako želim doći jedan red gore, a to mi je sad komplikacija.
Realloc je nastavak na malloc, on polje uvećava.

Of all the things I have lost I miss my mind the most...
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.routotelecom.com.



+1 Profil

icon Re: realloc polja[][]02.03.2007. u 10:38 - pre 207 meseci
Ako podjemo od toga da je
Code:

polje[i][j] = *(*(polje + i) + j);

onda dvodimenziono polje pravish sa
Code:

int** polje = NULL;
int X = 10, Y = 5;// dimenzije polja
for (x = 0; x < X; x++)
  *(polje + x) = (int*)malloc(Y * sizeof(int));

a menjash velichinu po Y sa
Code:

int newY = 15;// nova velichina za Y
for (x = 0; x < X; x++)
{
  int* res = (int*)realloc(*(polje + x), newY * sizeof(int));
  if (res == NULL)
    exit(EXIT_FAILURE);// nema vishe memorije
  *(polje + x) = res;
}

Petlje se kreccu po dimenziji X. Svako
Code:
*(polje + x)
dereferencira dimenziju X tj. omoguccava da dodavanjem broja na tu vrednost se "pomerash" po dimenziji Y. Josh jedno dereferenciranje
Code:
*(*(polje + x) + y)
daje vrednost sadrzzanu u polju, tj. kao da si nizu uradio
Code:
polje[x][y]

Nisam probao kod ali nadam se da je jasno shta sam hteo da kazzem.
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

dux_cro
Zgb

Član broj: 24884
Poruke: 63
*.adsl.net.t-com.hr.



Profil

icon Re: realloc polja[][]02.03.2007. u 10:56 - pre 207 meseci
Hvala sad ću probati, ja sam našao malo drukčije rješenje, mislim da je jednostavnije, al svodi se isto.

Code:

int velicina1;
int velicina2;
int** polje;

polje = (int**)malloc(velicina1 * sizeof(int*)); 
for (int i = 0; i < velicina1; i++){
   polje[i] = (int*)malloc(velicina2 * sizeof(int));
}

 


i poljima se može pristupati sa polje[x][y]

[Ovu poruku je menjao dux_cro dana 03.03.2007. u 09:02 GMT+1]
Of all the things I have lost I miss my mind the most...
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.routotelecom.com.



+1 Profil

icon Re: realloc polja[][]02.03.2007. u 11:10 - pre 207 meseci
Nisam stavio, naravno da treba rezervisati prostor po dimenziji X pre petlje za rezervisanje po Y.
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

tosa
上海, 中国

Član broj: 1811
Poruke: 1342
..w.sh.dynamic.163data.com.cn.

ICQ: 14293955
Sajt: https://github.com/milost..


+48 Profil

icon Re: realloc polja[][]04.03.2007. u 04:58 - pre 207 meseci
Rešenje koje je karas okačio je neispravno, pisaće po memoriji gde ne bi trebalo.
Ovo drugo od duksa ispravlja taj problem a razlika je u tome što polje pokazuje
na ispravan (ručno rezervisan) deo memorije.
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.21.eunet.yu.



+1 Profil

icon Re: realloc polja[][]04.03.2007. u 22:27 - pre 207 meseci
Da, zaboravio sam da stavim malloc() za samo polje shto sam napomenuo posle, ostala inicijalizacija je ista. Pisano iz glave i na brzinu. Nadam se da je shvatio kretanje po X i Y dimenziji matrice koju predstavlja pointer na pointer, shto mi je bio cilj.
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

dux_cro
Zgb

Član broj: 24884
Poruke: 63
*.adsl.net.t-com.hr.



Profil

icon Re: realloc polja[][]05.03.2007. u 15:40 - pre 207 meseci
Shvatio sam i puno mi je pomoglo...
Zahvaljujem
Of all the things I have lost I miss my mind the most...
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: realloc polja[][]

[ Pregleda: 3176 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.