Witam!
Poruszałem już w/w problem na tym forum lecz nie uzyskałem wartościowej odpowiedzi. Chce zastosowac weryfikacje danych przed wprowadzeniem danych do rekordu. Ma to wygladac tak: podaje dane, pytanie czy dane sa poprawne [T/N] jesli tak to dodaje do pliku jesli nie to ponownie podaje. Zastosowalem pętle do while. Działa poprawnie i gdy naciśnę pętle podawanie danych powtarza się lecz błędny rekord zostaje dodany do rekordu. Co jest nie tak w ponizszym kodzie?:
void dodaj_do_bazy(const char* in,uczen *s,int n) // Dodanie do bazy, wskaznik na nazwe pliku (in) i wskaznik s na strukture);
{
ofstream plik;
plik.open(in);
char znak;
znak=getchar();
for(int i=0;i<n;++i)
{
do
{
s[i].nr = i+1;
cout<<"Podaj Imie :\n";
cin>>s[i].imie;
cout<<"Podaj Nazwisko :\n";
cin>>s[i].nazwisko;
cout<<"Klasa :\n";
cin>>s[i].klasa;
cout<<"Podaj ocene z zachowania :\n";
cin>>s[i].zach;
cout<<"Podaj srednia ocen :\n";
cin>>s[i].srednia;
cin >> znak;
}while(znak !='t');
if (znak == 't')
{
plik<<s[i].nr<<endl;
plik<<s[i].imie<<endl;
plik<<s[i].nazwisko<<endl;
plik<<s[i].klasa<<endl;
plik<<s[i].zach<<endl;
plik<<s[i].srednia<<endl;
plik<<"\n\n";
}
plik.close();
}
}