PDA

Visualizza la versione completa : [C++] Leggere matrice di numeri da file e memorizzarli in vettori


carol84
16-05-2007, 21:32
Salve!! Ho un problema e spero mi aiuterete ancora.
Ho un file di testo in cui ho memorizzato tre interi m, k, ed n, il problema è quello di leggere i numeri nel seguente modo:

dato il file di testo

3 4 5

2 -1 6 4 3
1 0 3 0 -1
3 0 4 4 9

6 -3 2 0 1
5 4 9 8 3
10 15 20 30 0
40 50 60 20 80
0 1 3 9 10

dove: m=3 (vettori), k=4(vettori) ed n=5(elementi di questi due vettori).

Mi aiutate ad implementare questo codice? Sono le prime volte che ho a che fare con questo tipo di argomento!!!

Grazie a tutti!

oregon
16-05-2007, 21:57
Ma è lo stesso quesito che hai posto in

http://forum.html.it/forum/showthread.php?s=&threadid=1123416

?

carol84
16-05-2007, 23:49
Non è lo stesso quesito, ora ogni riga è un vettore e appena si legge m, k ed n come faccio a creare m e k vettori, ciascuno di dimensione n?

Ciao

puntino
17-05-2007, 00:32
scusa Carol84, vedi se ho capito.

Partiamo dal file che hai dato:

Entro nel file e leggo la prima riga;
Il primo elemento della riga "m" indica che devo allocare m vettori
Il secondo elemento della riga "K"indica che devo allocare k vettori
Il terzo elemento della riga indica che gli m+k vettori hanno ognuno n elementi.

poi passo alla seconda riga e carico i 5 elementi nel primo degli m vettori e così via...

ho capito?

Se fosse come ho descritto c'è qualcosa che non mi torna le rghe dopo la prima cioè quella con
3 4 5 sono otto mentre 3+4=7 cioè ti manca un vettore...

carol84
17-05-2007, 01:37
Si hai capito perfettamente!! Sono io che ho sbagliato a fare l'esempio, infatti, l'ultima riga non ci vuole, hai ragione tu 3+4=7, dove 7 saranno i vettori ed n è la dimensione di ciascun vettore. Io ho pensato di utilizzare una matrice e ogni riga di questa matrice rappresenta i vettori da memorizzare. Ovviamente, poichè ho due insiemi di dati, utilizzo due matrici. Cosa ne pensi?

Grazie per la risposta!

Ciao!

puntino
17-05-2007, 11:32
Si le matrci possono andare bene, poi dipende anche da cosa ti viene chiesto difare con queste matrici e magari ti acorgi che era più conveninete usare dei vettori.

Due matrici cioè la prima MxN elementi e la seconda KxN elementi. Giusto ?

Se ci rifletti è anche abbastanza semplice creare un programmino che gestisce questi dati:

Crei una funzione o classe (non se fai prorammazione ad oggetti o "procedurale") che legge dal file la prima riga e restiuisce gile lementi m, k ed n

Fai una classe o funzione che crea una matrice del tipo PxQ (dove PxQ è uguale a seconda dei casi a MxN oppure KxN)

Fai un main chiami la funzione leggi dal file e fai due istanze della matrice la prima per gli MxN elementi e la seconda KxN

Questo è in linea di principio quello che potresti fare
Ciao

carol84
22-05-2007, 01:44
Il programma l'ho fatto con la matrice ma, giusto per sapere in termini di efficienza, tu come avresti fatto con i vettori? Perchè se è più efficiente con i vettori cambio la struttura dati!!

Grazie per la risposta.

puntino
22-05-2007, 17:04
In termini di efficienza non ho mai lavorato con matrici e vettori.
Quello che ti consiglio di fare, invece, è considerare un'allocazione dianamica dei vettori e delle matrici, ora non ricordo bene il probelam ma se non conosci a priori qunate righe ci soo in un file cioè i primi 3 numeri della riga cambiano da file a file anzichè fare delle matrici o vettori enormi allocati staticamente puoi usare delle matrici o vettori allocate dinamicamente.
Ciao

Loading