PDA

Visualizza versione completa : C++ :vettore con n. elementi non noti


verloc
28-06-2001, 17.40.01
Faccio un esempio pratico.
Mettiamo che voglia costruire un vettore(e quindi riempirlo) con un numero di elementi non noto.
Caso tipico:leggo un file riga per riga e costruisco un vettore in cui ogni elemento é costituito dalla stringa riga.L'algoritmo dovrebbe poter prevedere come elementi del vettore anche i numeri(da usare in calcoli qualsiasi).
Se qualcuno riesce a fare il programma,(che legge i dati riga per riga e restituisce il vettore)mi farà felice perchè mi aiuterebbe a capire. :)

DarkAngel
10-07-2001, 14.46.44
Sfortunatamente il problema che poni tu e' alquanto impraticabile senza complicarsi parecchio la vita! Per definizione un vettore in fase di dichiarazione deve contenere la dimensione massima di elementi che deve contenere! Anche se e' vero che tu puoi dichiarare un vettore dinamicamente e' altresi vero che devi conoscere a priori la dimensione da assegnargli! Mi spiego: tu nn sai quanti elementi deve contenere il vettore, pero' potresti chiederlo in input all'utente e dopo aver acquisito il valore dichiari il vettore con quel valore!
Nel tuo caso nn e' applicabile! Prima dovresti sapere di quante righe e' composto il file e poi dichiarare il vettore con il numero di righe del file come dimensione...
Altra cosa, un vettore puo contenere solo elementi fra loro omogenei e quindi uguali! Nn puoi mettere stringhe e numeri insieme!!! O tutte stringhe o tutti numeri!
In pratica nn e' realizzabile secondo me...
Dubbi?
Ciaoz

emiliano
19-07-2001, 02.00.22
Bisognerebbe usare strutture tipo Liste, le quali tipermettono qualsiasi operazione di aggiunta o eliminazione di elementi.
Per il tuo secondo problema credo che ci sia poco da fare, io userei un record con un campo stringa e uno intero.
ciao

DarkAngel
19-07-2001, 10.41.47
Originally posted by emiliano
Bisognerebbe usare strutture tipo Liste, le quali tipermettono qualsiasi operazione di aggiunta o eliminazione di elementi.
Per il tuo secondo problema credo che ci sia poco da fare, io userei un record con un campo stringa e uno intero.
ciao
Credo che l'idea fosse quella di nn usare liste, ma un vettore...
Per quanto riguarda l'uso di una stringa e un intero...uhm...
Diciamo che cosi nn stai usando piu un vettore semplice...
Pero' si potrebbe tentare qualcosa con le union...
uhm..........

emiliano
20-07-2001, 20.48.03
Anche se puo sembrare più complessa come soluz. quella delle liste risulta sicuramente più veloce.

In alternativa si potrebbe implementare una funzione che "simuli" il comportamento delle liste per degli array:
In poche parole la funzione dovrebbe tener conto del numero degli elementi dell'array, poi crearne uno d'appoggio e copiare il contenuto del vecchi array in questo.
Dopo si dovrebbe eliminare (delete) il vecchio array e riallocarlo con la dimensione di prima +1.
Infine si deve copiare dal'array di appoggio in quest'ultimo.

Simile sarebbe la funzione per eliminare un elemento.

Comunque quello che io penso è:
LE LISTE ESISTONO => USIAMOLE!!!
Ciao