problem z funkcją przeszukującą strukture

0

mam problem przeszukaniem struktury w taki sposób żeby wypisywała wszystkie rekordy spełniające kretyria. robiłem pare innych ale ciągle jest to samo. gdy petla trafia na rekord wypisuje go i przestaje przeszukiwać reszte by sprawdzić czy jeszcze inne wpisy w strukturze nie spełniają kryteria szukania. Czy pomógłby mi ktoś rozwiązać problem?

void szukaj_rok_wydania()
{
     int a;
     cout << " Podaj rok wydania ksiazki : ";
     cin >> a;
     ksiazka * szuk = poczatek;
     while (szuk->next != NULL)
     {
           if(szuk->rok_wydania == a)
           {
              break;
           }
           szuk=szuk->next;
     }
     if(szuk->rok_wydania == a)
           {
              cout << endl << szuk->tytul;
              cout << endl << szuk->imie;
              cout << endl << szuk->nazwisko;
              cout << endl << szuk->wydawnictwo;
              cout << endl << szuk->gatunek;
              cout << endl << szuk->rok_wydania << endl; 
           }
}
0

Wtf. Dałeś przecież break, to jak ma szukać dalej? Po co on tam jest? To co jest w tym dużym if po ętli powinno być wewnątrz pętli zamiast tego if z break.

0

i bez breaka tam też nie działało ale juz rozkmniłem.

void szukaj_rok_wydania()
{
int a;
cout << " Podaj rok wydania ksiazki : ";
cin >> a;
ksiazka * szuk = poczatek;
while (szuk->next != NULL)
{
if(szuk->rok_wydania == a)
{
cout << endl << szuk->tytul;
cout << endl << szuk->imie;
cout << endl << szuk->nazwisko;
cout << endl << szuk->wydawnictwo;
cout << endl << szuk->gatunek;
cout << endl << szuk->rok_wydania << endl;
}
szuk=szuk->next;
}
if(szuk->rok_wydania == a)
{
cout << endl << szuk->tytul;
cout << endl << szuk->imie;
cout << endl << szuk->nazwisko;
cout << endl << szuk->wydawnictwo;
cout << endl << szuk->gatunek;
cout << endl << szuk->rok_wydania << endl;
}
}

Dzieki za pomoc .

0

Rozumiem, że wskaźnik *początek jest globalny?
Po co Ci dwa takie same if'y? Ten drugi if się nigdy nie wykona.

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