Infatti ... la questione è in rosso
codice:
cin >> cognome;
while (studenti >> nomeS >> cognomeS >> luogoNascitaS >> dataNascitaS >> classeS)
{
insegnanti.seekg(0, insegnanti.beg);
while (insegnanti >> nomeI >> cognomeI >> luogoNascitaI >> dataNascitaI >> classeI >> materia)
{
if((cognome==cognomeS) && (classeS==classeI)){
cout << "\tNome: " << nomeI << "\tCognome: " << cognomeI << "\tMateria: " << materia <<endl;
i++;
}
}
In ogni caso, dato che cerchi un solo cognome che sta nel file registro, non dovresti scrivere due while una dentro l'altra ma una prima while per trovare i dati del nominativo cercato nel registro e poi un solo while dopo per cercare i dati nel file insegnanti, ovveo
codice:
cout << "Inserire il cognome dello studente:" <<endl;
cin >> cognome;
ifstream studenti;
studenti.open("c:\\registro.txt");
while (studenti >> nomeS >> cognomeS >> luogoNascitaS >> dataNascitaS >> classeS)
if(cognome==cognomeS)
break;
ifstream insegnanti;
insegnanti.open("c:\\insegnanti.txt");
while (insegnanti >> nomeI >> cognomeI >> luogoNascitaI >> dataNascitaI >> classeI >> materia)
if(classeS==classeI)
{
cout << "\tNome: " << nomeI << "\tCognome: " << cognomeI << "\tMateria: " << materia <<endl;
i++;
}
cout << "\n\n" << i << "insegnanti trovati per questo studente\n\n" << endl;