Witam otóż mój problem polega na tym ,że gdy wyszukuję dany element w moim programie (ma 3 struktury) np. po ID to gdy chcę wyszukać np.2 ID to wypisuje mi dane tylko z pierwszego ID oraz gdy chce wyszukać artystę ,gatunek lub też inny ciąg znaków to w ogóle nie wypisuje mi danych oto funkcje odpowiadające za szukanie(void szukanie) i za wyświetlanie(void szukanie_pomoc):
void szukanie_pomoc(struct album *head, struct album *head_album, struct artysta *head_artysta, struct gatunek *head_gatunek, int licznik)
{
struct artysta *artysta_pomoc = head_artysta;
struct gatunek *gatunek_pomoc = head_gatunek;
printf("ID: %d\n", head_album->id);
printf("Tytul: %s\n", head_album->tytul);
printf("Artysci tego albumu:\n");
while(artysta_pomoc)
{
if(artysta_pomoc->id_album==head_album->id)
{
printf(" %d. %s %s\n", licznik, artysta_pomoc->imie, artysta_pomoc->nazwisko);
licznik++;
}
artysta_pomoc=artysta_pomoc->next;
}
licznik=1;
printf("Gatunki tego albumu:\n");
while(gatunek_pomoc)
{
if(gatunek_pomoc->id_albumu==head_album->id)
{
printf(" %d. %s\n", licznik, gatunek_pomoc->nazwa);
licznik++;
}
gatunek_pomoc=gatunek_pomoc->next;
}
printf("Rok: %d\n", head_album->rok);
printf("Kupiony: %s\n",head_album->stan == 1?"Tak":"Nie");
printf("Przesluchany: %s\n\n", head_album->przesluchany == 1?"Tak":"Nie");
head_album = head_album->next;
return;
}
void szukanie(struct album *head, struct album *head_album, struct artysta *head_artysta, struct gatunek *head_gatunek)
{
int licznik=1;
int id1, opcja, rok1;
char artysta1[20], tytul1[20],gatunek1[20];
printf("1.Wyszukiwanie po ID\n 2.Wyszukiwanie po nazwisku lub imieniu artysty.\n 3.Wyszukiwanie po tytule.\n 4.Wyszukiwanie po roku wydania albumu.\n 5.Wyszukiwanie po nazwie gatunku.\n");
printf("Twoj wybor:\n");
scanf("%d", &opcja);
switch(opcja)
{
case 1:
system("CLS");
printf("Wprowadz id ktore chcesz znalezc.\n");
scanf("%d", &id1);
while(head)
{
if(head->id==id1)
{
szukanie_pomoc(head, head_album, head_artysta, head_gatunek, licznik);
}
head = head->next;
}
printf("Id nie istnieje.\n");
break;
case 2:
system("CLS");
printf("Wprowadz imie lub nazwisko artysty ktorego chcesz znalezc.\n");
scanf("%s", &artysta1);
while(head)
{
if (strcmp(head_artysta->imie ,artysta1) == 0 || strcmp(head_artysta->nazwisko ,artysta1) == 0)
{
szukanie_pomoc(head, head_album, head_artysta, head_gatunek, licznik);
}
head = head->next;
}
printf("Artysta o podanym nazwisku lub iminiu nie istnieje.\n");
break;
case 3:
system("CLS");
printf("Wprowadz tytul ktory chcesz znalezc.\n");
scanf("%s", &tytul1);
while(head)
{
if (strcmp(head->tytul, tytul1) == 0)
{
szukanie_pomoc(head, head_album, head_artysta, head_gatunek, licznik);
}
head = head->next;
}
printf("podany tytul nie istnieje.\n");
break;
case 4:
system("CLS");
printf("Wprowadz rok wydania albumu ktory chcesz odnalezc.\n");
scanf("%d", &rok1);
while(head)
{
if (head->rok == rok1)
{
szukanie_pomoc(head, head_album, head_artysta, head_gatunek, licznik);
}
head = head->next;
}
printf("Podany rok wydania nie istnieje.\n");
break;
case 5:
system("CLS");
printf("Wprowadz nazwe gatunku ktorego chcesz odnalezc.\n");
scanf("%s", &gatunek1);
while(head)
{
if (strcmp(head_gatunek->nazwa, gatunek1) == 0)
{
szukanie_pomoc(head, head_album, head_artysta, head_gatunek, licznik);
}
head = head->next;
}
printf("Podany gatunek nie istnieje.\n");
break;
}
}