Błąd logiczny przy wyszukiwaniu, C++

0

Witam!
Mam problem z wyszukiwaniem po nazwisku w rekordzie.
Mam kod:

 void po_nazwisku(uczen *s,int n,string nazw )
{	
	for(int i=0;i<n;++i)
	{
		if(s[i].nazwisko == nazw)
		{
		wypisz(s,n);
        	
		}
	else 
         system("cls");
         cout <<"Nie znaleziono ucznia o takim nazwisku, sprobuj ponownie \n";
         getchar();	
         }
	}
}

Ale przy else jest na pewno błąd logiczny, bo zostanie wyświetlony komunikat dla pierwszego != nazw. Jak to rozwiązać tak aby wypisało wszystkie szukane nazwiska ,a jeśli nie znajdzie to wyświetli stosowny komunikat?

1

Przykładowo, jeśli znajdzie, kończy funkcję:

void po_nazwisku(uczen *s,int n,string nazw )
{        
  for(int i=0;i<n;++i)
  {
    if(s[i].nazwisko == nazw)
    {
      wypisz(s,n);
      return; 
    }
  }
  system("cls");
  cout <<"Nie znaleziono ucznia o takim nazwisku, sprobuj ponownie \n";
}
0
void po_nazwisku(uczen *s,int n,string nazw)
  {
   bool brak=true;
   for(int i=0;i<n;++i)
     {
      if(s[i].nazwisko == nazw)
        {
         wypisz(s,n);
         brak=false;
        }
     }
  if(brak) cout<<"Nie znaleziono ucznia o takim nazwisku, sprobuj ponownie"<<endl;
 }
0

Dziękuje bardzo! :)
Kolejny problem mam przy wypisywaniu wyszukanych rekordów.
Gdy znajdzie odpowiednie nazwisko zostaje wywołana funkcja wypisz, niestety wyświetla ona wszystkie rekordy a nie ten który wyszukano.

 void wypisz(uczen *s,int n)
{
	for(int i=0;i<n;++i)
	{
    	cout<<"Nr."<<s[i].nr<<endl;                             // Mariusz: Zawartość for dobrym nadydatem na funkcję WypiszRekord
		cout<<"Imie         :     "<<s[i].imie<<endl;
		cout<<"Nazwisko     :     "<<s[i].nazwisko<<endl;
		cout<<"Klasa        :     " <<s[i].klasa<<endl;
		cout<<"Zachowanie   :     "<<s[i].zach<<endl;
		cout<<"Srednia      :     "<<s[i].srednia<<endl;
		cout<<"-  -  -  -  -  -  -  -  -  -  -  -  -\n";
	}
}
 void po_nazwisku(uczen *s,int n,string nazw)
  {
   bool brak=true;
   for(int i=0;i<n;++i)
     {
      if(s[i].nazwisko == nazw)
        {
         wypisz(s,n);
         brak=false;
        }
     }
  if(brak) 
  {
  cout<<"Nie znaleziono ucznia o takim nazwisku, sprobuj ponownie"<<endl;
 }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1