[c++]non mi riesce un programma.. :P

di
Anonimizzato6604
il
4 risposte

[c++]non mi riesce un programma.. :P

Le istruzioni sono queste:
Si scriva un programma che legge, per 10 volte, da tastiera il numero di matricola di uno studente (compreso fra 0 e 999999) e il suo voto riportato all’esame (compreso fra 0 e 30).
I valori letti devono essere scritti in un file “risultati.txt.” in modo che in ogni riga compaia il numero di matricola e il voto separati da uno spazio.
io faccio così ma non mi viene..

#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{int matricola, voto, n=0, am=0, av=0;
fstream risultati;
risultati.open ("risultati.txt",ios::out);
cout<<"programma per riportare su file .txt i voti delle matricole\n";
while (n<10)
{
      do
        {
        if (am==0)
           {
            am++;
            cout<<"\nDigitare numero matricola:\n";
           }
        else
            {
             cout<<"ERRORE: ridigitare numero di matricola\n";
            }
        cin>>matricola;
        }
      while (matricola<0 || matricola>=999999);

      do
      {
       if (av==0)
         {
                av++;
                cout<<"Digitare voto:\n";
         }
       else
          {
          cout<<"ERROE: ridigitare voto\n";
          }
       cin>>voto;}
      while (voto<0 || voto>30);
risultati<<matricola<<" "<<voto<<"\n";
n++;
}
    system("PAUSE");
    return EXIT_SUCCESS;
}

4 Risposte

  • Re: [c++]non mi riesce un programma.. :P

    Inizialmente am=0 poi am viene incrementato (am++)ed al secondo giro testi am==0 che naturalmente entrerà in else con la print dell'errore
    Lo stesso sbaglio è presente anche per la veriabile av...
    Domanda: ma a cosa ti servono queste variabili?

    Altra cosa molto importante è che il file aperto lo devi chiudere all'uscita del giro principale.

    Saluti,
    Max
  • Re: [c++]non mi riesce un programma.. :P

    Allora, l'idea è questa:
    la prima volta che enstro all'interno del do mi da in cout "Digitare numero matricola", si incrementa l'am e, se il valore del numero di matricola non va bene, il while rimanda al do che questa volta, con il valore di am incrementato, passa all'else che da invece in cout ERRORE: ridigitare numero di matricola
    idem per il voto.. però, non so perchè quando mando in esecuzione fa un casino della madonna..
    Altra cosa molto importante è che il file aperto lo devi chiudere all'uscita del giro principale.
    ma il file non lo chiude automaticamente quando termina il programma?
  • Re: [c++]non mi riesce un programma.. :P

    Ho capito.
    Per patchare il tuo codice devi:
    1) mettere am=av=0; prima del primo do...while || dopo il secondo.
    2) mettere risultati.close() all'uscita del ciclo - prima di uscire -
    ma il file non lo chiude automaticamente quando termina il programma?
    Si, è vero... ma non darlo mai per scontato! Come lo apri lo devi chiudere... è una regola

    Saluti,
    Max
  • Re: [c++]non mi riesce un programma.. :P

    Ok, grazie mille ^^
    EDIT:ho apportato le modifiche e ora va perfettamente grazie ancora..
Devi accedere o registrarti per scrivere nel forum
4 risposte