funkcja 1 do dodania
dane* kopiuj_element(dane* zrodlo)
{
dane* nowy = (dane*)malloc(sizeof(dane));
if (nowy == NULL) {
printf("\nBlad alokacji pamieci!\n");
return NULL;
}
strcpy(nowy->tytul, zrodlo->tytul);
nowy->rok = zrodlo->rok;
strcpy(nowy->wydawca, zrodlo->wydawca);
strcpy(nowy->platforma, zrodlo->platforma);
nowy->ocena = zrodlo->ocena;
nowy->nastepny = NULL;
nowy->poprzedni = NULL;
return nowy;
}
void druga_lista_z_pierwszej_po_frazie(dane* P1, dane** P2, dane** K2)
{
if (P1 == NULL) {
printf("\nLista pusta!\n");
return;
}
czyszczenie(P2, K2);
char fraza[100];
printf("\nPodaj fraze (tytul): ");
while (getchar() != '\n');
scanf("%100[^\n]", fraza);
for (int i = 0; fraza[i]; i++)
fraza[i] = tolower(fraza[i]);
dane* tmp = P1;
int znaleziono = 0;
while (tmp != NULL) {
char tytul_maly[100];
strcpy(tytul_maly, tmp->tytul);
for (int i = 0; tytul_maly[i]; i++)
tytul_maly[i] = tolower(tytul_maly[i]);
if (strstr(tytul_maly, fraza) != NULL) {
dane* nowy = kopiuj_element(tmp);
if (nowy == NULL) return;
dodajK(P2, K2, nowy);
znaleziono = 1;
}
tmp = tmp->nastepny;
}
if (!znaleziono)
printf("\nBrak pasujacych elementow.\n");
else {
printf("\nDruga lista:\n");
wyswietl(*P2);
}
}
main( nq poczatku)
dane* P2 = NULL;
dane* K2 = NULL;
w menu
case 6:
druga_lista_z_pierwszej_po_frazie(P, &P2, &K2);
break;