Esercizio su file

di il
18 risposte

Esercizio su file

Salve ragazzi,
Ho un grave problema, non riesco a capire delle cose sui file ed ho bisogno che qualcuno me le spieghi, sto davvero impazzendo..

Si desidera sviluppare un programma in linguaggio C per gestire in modo informatico un
registro di esame.
Il registro è memorizzato in un ?le di testo con nome registro.txt e contiene i dati
di N studenti, ove N è il numero intero scritto nella prima riga del ?le. Dopo questa prima
riga, ogni riga successiva contiene il dato relativo ad un singolo studente, indicando il numero di matricola dello studente (numero intero compreso 1 e 999999) ed il voto conseguito
(numero intero con valore tra 18 e 30, oppure zero per indicare che l’esame non è ancora
stato sostenuto).
il programma deve fornire le seguenti statistiche: numero di studenti promossi e relativa percentuale sul totale e voto medio degli studenti promossi
ESEMPIO

3

33467 30
24356 0
224678 18

OUTPUT:
promossi = 2 (66.7 %)
voto medio = 24.0




Dopo aver aperto il file per me diventa davvero complicato operare con i dati del file. Qualcuno può aiutarmi spiegandomi come fare?

18 Risposte

  • Re: Esercizio su file

    Devi leggere i dati dal file. Non è complicato, basta usare le funzioni di lettura da file. Le conosci?
  • Re: Esercizio su file

    Se ti riferisci ad fscanf si la conosco però ho molti dubbi a riguardo...
  • Re: Esercizio su file

    Se non dici quali sono i dubbi e non mostri l'uso che fai della fscanf nel tuo codice, che ti si può dire?

    La prima cosa che ti chiede di fare è leggere il numero che indica quante righe di dati ci sono. Hai letto questo numero?
  • Re: Esercizio su file

    Per leggere il primo rigo contente il numero di candidati dovrei scrivere:
    
    fscanf(fp, "%d", &candidati);
    
    Dove fp è il puntatore a file e candidati la variabile dove salvo il dato
  • Re: Esercizio su file

    Ok, mi sembra corretto ... quindi? Che dubbi?
  • Re: Esercizio su file

    Mi interesserebbe ora acquisire il numero matricola e il voto per salvarli nelle rispettive variabili, ma non so come devo iniziare ad acquisirli escludendo la prima riga del file di cui ho preso gia il valore con la precedente fscanf..
  • Re: Esercizio su file

    Hai già letto la prima riga con la prima scanf, le altre scanf leggeranno le righe seguenti. Ovviamente tu sai quante sono le righe che seguono...
  • Re: Esercizio su file

    Ok perfetto, ma se volessi leggerle tutte utilizzando un ciclo while, come condizione cosa dovrei mettere?
    Perche se faccio while (fp!feof) mi rilegge la prima riga
  • Re: Esercizio su file

    Intanto si scrive

    while(!feof(fp))

    ma non hai bisogno di questo modo di leggere dato che sai esattamente QUANTE sono le righe da leggere. Ti basta un ciclo for.
  • Re: Esercizio su file

    Si scusami per la sintassi del while
    Comunque non posso usare cicli for, ci è stato vietato
  • Re: Esercizio su file

    Ok, utilizza la while ... sicuramente non leggerai dall'inizio del file perché hai già letto la prima riga con la prima fscanf.

    Prova !
  • Re: Esercizio su file

    Grazie mille, provo e ti faccio sapere
  • Re: Esercizio su file

    Ho provato e funziona ma c'è un problema con un solo %d mi acquisisce entrambi i valori in una variabile ma a me interessa che mi acquisisca entrambi i valori in due variabili differenti che sono una matricola e una voto
  • Re: Esercizio su file

    E questo è un problema?

    Andiamo ... O usi due fscanf con due variabili o una fscanf con due %d e due variabili. Come per la scanf che dovresti aver studiato.

    Non ti fermare alla prima difficoltà. E mostra il codice che hai scritto.

    P.S. Se studi informatica e ti fermi su queste sciocchezze, come farai quando arriveranno le vere cose serie e difficili?
Devi accedere o registrarti per scrivere nel forum
18 risposte