MaxGuevara
19-01-2006, 21:50
Ciao.
Ho un problema a leggere delle righe di testo da un file.
In pratica il programma C++ che ho in mente dovrebbe chiedere all'utente di digitare il numero di una matricola,cercare all'interno del file questo numero e se lo trova stamparmi a video il nome del proprietario.
Vi posto la parte del codice che fa questo:
cout<<"Inserisci il numero di matricola:"<<endl;
cin>>matr;
if(!leggi)
{
cerr<<"Impossibile aprire il file!";
return 1;
}
for(unsigned int n=0;n<1024;++n)
{
leggi>>lettura[n].nome>>lettura[n].cognome>>lettura[n].anno>>lettura[n].nascita>>lettura[n].recapito>>lettura[n].matricola>>lettura[n].email;
}
posizione_matricola=cerca_numero_matricola(lettura,matr);
if(posizione_matricola<0)
{
cout<<"\nNumero di matricola non presente";
return 0;
}
else
{
cout<<"\nIl numero di matricola "<<matr<<" appartiene a "<<lettura[posizione_matricola].nome<<" "<<lettura[posizione_matricola].cognome;
}
leggi.close();
La funzione chiamata nello snippet sovrastante e' la seguente:
int cerca_numero_matricola(info a[],unsigned int b)
{
int indice;
int i=0;
for(i=0;i<1024;i++)
{
if(a[i].matricola=b)
indice=i;
return indice;
}
}
Il mio problema e' che il programma riesce ad effettuare la ricerca e a stamparmi a video con successo solo i dati della prima riga,mentre la seconda non riesce a leggerla.
ESEMPIO:
Il programma legge da un file chiamato "Archivio.txt"
Il contenuto di Archivio.txt e':
Francesco Rossi 12345
Luca Verdi 67890
dove 12345 e 67890 sono i numeri di matricola.
Se io,una volta eseguito il programma,alla richiesta "Scrivi il numero di matricola"
scrivo 12345
mi appare:
Il numero di matricola 12345 appartiene a Francesco Rossi
E quindi e' tutto corretto,mentre se scrivo:
67890
mi risponde con:
Numero di matricola non esistente.
Spero di essere stato abbastanza chiaro.
Grazie in anticipo.
Ho un problema a leggere delle righe di testo da un file.
In pratica il programma C++ che ho in mente dovrebbe chiedere all'utente di digitare il numero di una matricola,cercare all'interno del file questo numero e se lo trova stamparmi a video il nome del proprietario.
Vi posto la parte del codice che fa questo:
cout<<"Inserisci il numero di matricola:"<<endl;
cin>>matr;
if(!leggi)
{
cerr<<"Impossibile aprire il file!";
return 1;
}
for(unsigned int n=0;n<1024;++n)
{
leggi>>lettura[n].nome>>lettura[n].cognome>>lettura[n].anno>>lettura[n].nascita>>lettura[n].recapito>>lettura[n].matricola>>lettura[n].email;
}
posizione_matricola=cerca_numero_matricola(lettura,matr);
if(posizione_matricola<0)
{
cout<<"\nNumero di matricola non presente";
return 0;
}
else
{
cout<<"\nIl numero di matricola "<<matr<<" appartiene a "<<lettura[posizione_matricola].nome<<" "<<lettura[posizione_matricola].cognome;
}
leggi.close();
La funzione chiamata nello snippet sovrastante e' la seguente:
int cerca_numero_matricola(info a[],unsigned int b)
{
int indice;
int i=0;
for(i=0;i<1024;i++)
{
if(a[i].matricola=b)
indice=i;
return indice;
}
}
Il mio problema e' che il programma riesce ad effettuare la ricerca e a stamparmi a video con successo solo i dati della prima riga,mentre la seconda non riesce a leggerla.
ESEMPIO:
Il programma legge da un file chiamato "Archivio.txt"
Il contenuto di Archivio.txt e':
Francesco Rossi 12345
Luca Verdi 67890
dove 12345 e 67890 sono i numeri di matricola.
Se io,una volta eseguito il programma,alla richiesta "Scrivi il numero di matricola"
scrivo 12345
mi appare:
Il numero di matricola 12345 appartiene a Francesco Rossi
E quindi e' tutto corretto,mentre se scrivo:
67890
mi risponde con:
Numero di matricola non esistente.
Spero di essere stato abbastanza chiaro.
Grazie in anticipo.