Witam!
Otóż mam taki problem. Mój program wyszukuje płyty dvd za pomocą tytułu i reżysera.
Zarówno w jednej jak i drugiej funkcji mam podobny problem, gdy wyszukam już jakiś film to ucina mi wejściową listę do momentu filmu, który wyszukałam(to pewnie za sprawą zapisu pom->next=NULL; , ale gdy go nie miałam to pokazywał mi się wyszukany film i wszystkie następne). Przy reżyserze jest jeszcze taki problem, że jak już znajdzie jakiś film to nie sprawdza, czy jest jeszcze jakiś inny tego samego reżysera. No i wyskakuje błąd i kończy się program, gdy podanego tytułu/reżysera nie ma w bazie. Jak to rozwiązać?
Tu wstawiam strukturę, funkcje i ich wywołanie:
struct dvd
{string tytul;
string rezyser;
string aktor1;
string aktor2;
string aktor3;
int rok;};
typedef struct element
{ struct dvd p;
struct element *next;
}Element;
typedef Element *Lista;
void wyswietl(Lista a)//funkcja wyświetla listę
// { while(a)
{
cout<<(a->p).tytul<<endl;
cout<<(a->p).rezyser<<endl;
cout<<(a->p).aktor1<<endl;
cout<<(a->p).aktor2<<endl;
cout<<(a->p).aktor3<<endl;
cout<<(a->p).rok<<endl;
// a=a->next;
cout<<"\n";
}}
Lista wyszukaj_tytul(Lista *a,string tytul)//funkcja wyszukuje filmy za pomocą tytułu
{
Lista pom;
pom=(*a);
while(pom != NULL && pom->p.tytul != tytul)
pom=pom->next;
return pom;
}
Lista wyszukaj_rezyser(Lista *a,string rezyser)//funkcja wyszukuje filmy podanego rezysera
{
Lista pom;
pom=(*a);
while(pom != NULL && pom->p.rezyser != rezyser)
pom=pom->next;
return pom;
}
Lista b=NULL;
switch(x)
{ case 0:{Lista pom=NULL;
cout<<"Podaj tytul(bez znakow polskich):\n";
getline(cin, linia); getline(cin, linia);
z.tytul=linia;
pom=wyszukaj_tytul(&b,z.tytul);
wyswietl(pom);
break;}
case 1:{Lista pom=NULL;
cout<<"Podaj imie i nazwisko rezysera(bez znakow polskich):\n";
getline(cin, linia); getline(cin, linia);
z.rezyser=linia;
pom=wyszukaj_rezyser(&b,z.rezyser);
wyswietl(pom);
break;}
Pomożecie?