PDA

Visualizza la versione completa : [C] Leggere da file determinate posizioni


pablomares
17-12-2011, 19:02
Salve a tutti, allora io ho un file fatto così:

nomeesame tab voto tab lode(eventuale) tab crediti

Naturalmente "tab" è il tasto fisico della tastiera. Ecco i dovrei prendere per ogni esame il voto la lode e i crediti, come faccio a predere questi determinati valori?

Grazie

oregon
17-12-2011, 19:04
Leggi linea per linea dal file in una stringa di caratteri con una fgets.

Poi separi le varie parti con la funzione strtok in base al carattere 'tab'.

pablomares
17-12-2011, 19:05
per leggere riga per riga come si fà, scusa ma sono alle prime armi.

oregon
17-12-2011, 19:08
Beh, bisogna aprire il file, leggere con la fgets ... leggi questa

http://www.cplusplus.com/reference/clibrary/cstdio/fgets/

e prova a scrivere qualcosa ...

pablomares
17-12-2011, 19:11
ok, solo che io una volta presi i valori devo fare la media dei voti degli esami. Quindi dovrei mettere ciascun dato dentro un array, altrimenti c'è un altro modo?

oregon
17-12-2011, 19:14
Se lo scopo è solamente il calcolo, mentre leggi puoi fare la somma ed evitare l'array.

pablomares
17-12-2011, 19:16
si però ci sono altri numeri, i crediti per esempio. Poi mi serve sapere quale esame ha la lode

oregon
17-12-2011, 19:19
Allora ... prima definisci chiaramente l'output che dovrà avere il tuo programma (magari mostra un esempio di 3 linee di dati in input e il risultato in output) e se l'output dovrà essere a video o su file.

Poi comincia a scrivere il codice che apre il file con la fopen, imposta un ciclo che legge ogni linea con la fgets e suddivide le parti della linea letta con la strtok.

pablomares
17-12-2011, 19:23
allora questo è il testo dell'es richiesto:


Si scriva un programma che legga da un file di dati [dati.txt] i valori dei voti ottenuti e dei crediti del corrispondente esame

Si calcoli la media aritmetica e quella pesata (sui crediti) e le corrispondenti deviazioni standard.

Il file di dati contiene in ogni riga una stringa con il nome dell’esame, un intero con il voto, un char per l’eventuale lode [L] e un intero con il numero di crediti. Ciascun valore è separato da un tab [\t]

oregon
17-12-2011, 19:29
Quindi l'output è a video e i dati li puoi calcolare man mano che leggi.

Puoi procedere con la scrittura della parte di codice che già ti ho spiegato (apertura del file con la fopen, lettura in un ciclo con la fgets di ogni linea e separazione delle varie parti con la strtok ...).

Loading