PDA

Visualizza la versione completa : [c]Leggere una matrice da file di dimensioni sconosciute


BiScA09
25-01-2010, 10:12
Salve a tutti,
Essendo ancora alle prime armi,mentre provavo a scrivere un programmino multi-funzione sulle matrici per esercitarmi,mi sono imbatuto su questo:voler inserire una matrice da un file di cui non si conoscono le dimensioni...

mi spiego meglio:
se ho un vettore è semplice perchè mi basta fare

while(!feof(file)){
fscanf(file,"%s",&vettore[i]);
i++;
}

se ho una matrice di dimensioni prestabilite tipo 3x3
for(i=0;i<3;i++){
for(j=0;j<3;j++){
fscanf(file,"%s",&matrice[i][j]);
}
}

Ma se la matrice nel file non la conosco e non so di quant'è come faccio?
grazie a tutti per la disponibilità :old:

oregon
25-01-2010, 10:46
Originariamente inviato da BiScA09
mi spiego meglio:
se ho un vettore è semplice perchè mi basta fare

while(!feof(file)){
fscanf(file,"%s",&vettore[i]);
i++;
}


Beh ... no ... avresti problemi anche in questo caso perchè, andando avanti nella lettura del file, potresti superare le dimensioni del vettore ...

Analogamente con la matrice ...

BiScA09
25-01-2010, 11:15
Originariamente inviato da oregon
Beh ... no ... avresti problemi anche in questo caso perchè, andando avanti nella lettura del file, potresti superare le dimensioni del vettore ...

Analogamente con la matrice ...



ti ringrazio per la risposta....
Ho capito cosa intendi e devo dire che non ci avevo pensato ad una cosa del genere anche perchè cosi me l'hanno mostrato...perchè effettivamente se ho un vettore[MAX] dove max è una macro da 50 e i dati nel file sono 51 avrei seri problemi....

quindi in un ottica puramente didattica e non sperimentale :mame: ,per prelevare informazioni da file e per rispettare sempre la capienza del vettore o della matrice,devo sapere a priori la quantità di informazioni contenute nel file?

un altra cosa...ho un dubbio anche su ordinare la matrice posso scriverlo qui o apro un altro threat?

c_junior
25-01-2010, 11:19
Originariamente inviato da oregon
Beh ... no ... avresti problemi anche in questo caso perchè, andando avanti nella lettura del file, potresti superare le dimensioni del vettore ...

Analogamente con la matrice ...

ma non potrebbe usare una classe vettore che implementa l'allocazione dinamica della memoria?

oregon
25-01-2010, 11:23
Originariamente inviato da c_junior
ma non potrebbe usare una classe vettore che implementa l'allocazione dinamica della memoria?

Ti ricordo che stiamo parlando di C ... niente classi.

Pur tuttavia, l'allocazione dinamica del vettore è una soluzione (ovvia) ... così come per la matrice.

Ma non so se abbia gia' affrontato l'argomento "allocazione dinamica".

P.S. Per l'ordinamento penso sia meglio un altro thread ...

BiScA09
25-01-2010, 11:24
Originariamente inviato da c_junior
ma non potrebbe usare una classe vettore che implementa l'allocazione dinamica della memoria?



Come si fa?? :fagiano: :biifu:
il problema che sono alle prime armi e pensavo che questa cosa si potesse fare adottando qualche altro metodo
tipo avevo pensato di ottenere il riempimento del file e poi mi sono bloccato e non ho capito cosa fare....ma sono soltanto mie folle supposizioni.....

c_junior
25-01-2010, 11:27
Originariamente inviato da oregon
Ti ricordo che stiamo parlando di C ... niente classi.

Pur tuttavia, l'allocazione dinamica del vettore è una soluzione (ovvia) ... così come per la matrice.


ma la classe vector non è disponibile anche in C? :dhò:

e poi con i puntatori si riuscirebbe a creare qualcosa che assomigli al vector in C, o mi sbaglio?

oregon
25-01-2010, 11:28
Originariamente inviato da c_junior
ma la classe vector non è disponibile anche in C? :dhò:

Classi in C ? :madai!?:


e poi con i puntatori si riuscirebbe a creare qualcosa che assomigli al vector in C, o mi sbaglio?

T'ho detto ... si puo' sfruttare l'allocazione dinamica della memoria (con la realloc) per ridimensionare il vettore (matrice) man mano si legge dal file ... ma probabilmente sono "strumenti" ancora non noti a chi ha aperto il thread ...

BiScA09
25-01-2010, 11:33
Originariamente inviato da oregon
Classi in C ? :madai!?:



T'ho detto ... si puo' sfruttare l'allocazione dinamica della memoria (con la realloc) per ridimensionare il vettore (matrice) man mano si legge dal file ... ma probabilmente sono "strumenti" ancora non noti a chi ha aperto il thread ... "strumenti" ancora non noti a chi ha aperto il thread ...

Appunto....anche se ho visto come si usano(so dell'esistenza di malloc e calloc) solo che dovrei dedicare molto tempo per saperli utilizzare nella maniera piu ottimale possibile....

Vi ringrazio della vostra disponibilità!!
Vorrei solo sapere se posso parlare di un altro problema in cui mi sono imbattuto sempre sulle matrici ma per quanto rigurada il riordinamento...posso postare qui o apro un altra sezione???

oregon
25-01-2010, 11:36
Originariamente inviato da BiScA09
"strumenti" ancora non noti a chi ha aperto il thread ...

Vorrei solo sapere se posso parlare di un altro problema in cui mi sono imbattuto sempre sulle matrici ma per quanto rigurada il riordinamento...posso postare qui o apro un altra sezione???

T'avevo già suggerito un altro thread, dato che il titolo e l'argomento saranno diversi ...

Loading