|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2007
Messaggi: 1469
|
[C]Aiuto programma con allocazione dinamica...
Ciao a tutti, spero che ci sia qualcuno che abbia voglia di aiutarmi.
Devo scrivere un programma che riceve da input dall'utente una sequenza di numeri interi, e la sequenza termina con 0. Poi il programma deve stampare a video la sequenza al contrario, escluso lo 0. vi allego una prima versione che compila ma non va, nel senso che non termina mai l'inserimento da input... La versione definitiva di questo programma è che non potendo prevedere quanti numeri verranno inseriti, dovrei allocare la memoria necessaria in modo dinamico (ad esempio raddoppiando la lunghezza del vettore ogni volta che questo si riempie)... qualcuno è cosi gentile da aiutarmi!Grazie!!!
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Basta che fai una malloc iniziale, del tipo
Codice:
int* array; array = (int*)malloc(dimensione_array*sizeof(int)) Codice:
dimensione_array = dimensione_array+x; array = (int*)realloc(array, dimensione_array*sizeof(int));
__________________
Il sole è giallo |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Aug 2007
Messaggi: 1469
|
devo per forza usarla la realloc??
sai oltre alla malloc non ci hanno insegnato altro quindi vorrei usare solo la malloc se possibile... potresti anche dirmi come dovrei quindi modificare il codice che ho postato??
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd Ultima modifica di phantom85 : 28-01-2008 alle 16:50. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
L'unica soluzione con la malloc è quella di creare un nuovo array di dimensione doppia , copiare il vecchio array (ad esempio con una "memcpy()") nei primi elementi del nuovo array e fare una "free()" sul vecchio array
Ciao
__________________
GPU Compiler Engineer |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Aug 2007
Messaggi: 1469
|
sai dirmi come dovrei modificare il codice??
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Esistono altre funzioni di riallocazione oltre alle classiche malloc/realloc, ma dalle mie conoscenze la sola malloc non ti basta, a meno che tu non sappia a priori il numero massimo di elementi che andrai ad inserire. Se vuoi usare la sola malloc, puoi fare un'allocazione di un array abbastanza grande (per esempio, (int*) malloc (1000 * sizeof(int), ovvero un array di mille interi), ma così perdi il vantaggio dell'allocazione dinamica.
__________________
Il sole è giallo |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Aug 2007
Messaggi: 1469
|
e si cosi nn avrebbe senso...però l'idea di anonimo veneziano non è male...solo che non so come modificare il codice per farlo andare...
__________________
Ho concluso transazioni con: gimor78, Taz83, Phopho, HighVoltage, PsychoWood, lexman, sandru, Alkaiser, Baccomatto, selu, Chris70, devil_luca, Novus88, anakin71, redpepper, renatofast, nucatolo, 8310, JeanCaneo e sirjd |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:51.