Pomijanie 1 rekordu podczas wyszukiwania

0

Witam!
Mam problem z wyszukiwaniem po rekordach tj. gdy wpisuje jakies nazwisko ktore chce znaleŹĆ wsrod danych to wszystko ladnie chodzi ale jesli nazwisko znajduje sie na 1 pozycji to go nie pokazuje. Oto kod:

 void po_nazwisku(uczen *u,int n,string nazw)
  {
   bool brak=true;
   for(int i=0;i<n;++i)
     {
      if(u[i].nazwisko == nazw)
        {
         	int j=i;
            wypisz2(u,j);
         brak=false;
        }
     }
  if(brak)
   cout<<"Nie znaleziono ucznia o takim nazwisku, sprobuj ponownie"<<endl;
 }
void wypisz2(uczen *u,int j)
{
	for(int i=j;i<=j;++i)
	{
    	cout<<"Nr."<<u[i].nr<<endl;
		cout<<"Imie         :     "<<u[i].imie<<endl;
		cout<<"Nazwisko     :     "<<u[i].nazwisko<<endl;
		cout<<"Klasa        :     " <<u[i].klasa<<endl;
		cout<<"Zachowanie   :     "<<u[i].zach<<endl;
		cout<<"Srednia      :     "<<u[i].srednia<<endl;
		cout<<"-  -  -  -  -  -  -  -  -  -  -  -  -\n";
}
		
	} 

Co jest nie tak? Liczę na waszą pomoc.

0

Ty jesteś normalny? Co to zapętla która zawsze wykonuje się 1 raz? o_O WTF?
A to:

int j=i;
wypisz2(u,j);

To już zakrawa o obłęd (no chyba ze te argument byłby referencja). Wiesz czym się różnią argumenty formalne od aktualnych? Zdajesz sobie sprawę ze nazwy tych zmiennych są bez znaczenia?

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

void wypisz2(uczen *u,int alamakota)
{
    cout<<"Nr."<<u[alamakota].nr<<endl;
    cout<<"Imie         :     "<<u[alamakota].imie<<"\n";
    cout<<"Nazwisko     :     "<<u[alamakota].nazwisko<<"\n";
    cout<<"Klasa        :     "<<u[alamakota].klasa<<"\n";
    cout<<"Zachowanie   :     "<<u[alamakota].zach<<"\n";
    cout<<"Srednia      :     "<<u[alamakota].srednia<<"\n";
    cout<<"-  -  -  -  -  -  -  -  -  -  -  -  -"<<endl;
}

Co do pytania to: pics or it didn't happen. Bo samo szukanie jest ok. O ile przekazujesz tam poprawne parametry. Ale patrząc na jakość i sensowność tego kawałka kodu to zgaduje że sobie po prostu nie wszystkie dane wczytałeś...

0

For faktycznie jest kompletnie bez sensu, ale został taki bo ogólnie wyszukiwanie działało i ten teoretycznie tylko raz wykonujacy sie for wyswietlał kilka wynikow wyszukiwania. Teraz usunałem wywołanie funkcji i wstawiłem bezpośrednie wypisywanie tj cout << bla bla... i problem nadal ten sam. Ciągle pomijany jest 1 rekord.

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