#include #include #include #define FORMAT 5 #define NAZWYK 44 #define NAZKAW 60 #define NAZGAT 20 #define ILEKAW 5 #define TRALEN 420 int mystrcmp(char* str1, char* str2) { int flag, i=0, m = 0; int koniec = 0; if(strlen(str1)>strlen(str2)) { char* tmp = str1; str1 = str2; str2 = tmp; } do { flag=(str1[m]==str2[i]); if (flag==1) { m+=1; } else { m = 0; } if (str1[m]==0) { koniec = 1; } if(str2[i]==0 && str1[m]==0) { koniec = 1; } else { if(str2[i]==0) { flag = 0; koniec = 1; } } i+=1; } while(koniec != 1); return flag; } struct Kawalek { char sciezka[TRALEN]; char tytul[NAZKAW]; char wykonawca[NAZWYK]; char gatunek[NAZGAT]; float czas; int nr; char format[FORMAT]; }; void co_to_za_kawalek(struct Kawalek* v, char* tytul, char* wykonawca, char* gatunek, float czas, int nr, char* sciezka, char* format) { strcpy( v -> format, format); strcpy( v -> sciezka, sciezka); strcpy( v -> tytul, tytul); strcpy( v -> wykonawca, wykonawca); strcpy( v -> gatunek, gatunek); v-> czas = czas; v-> nr = nr; } void szukajka_kawalek (struct Kawalek* v, char* tytul, char* wykonawca, char* gatunek) { char opcja; printf("Mozesz wyszukac dany kawalek z biblioteki, korzystajac z jego roznych parametrow.\n"); printf("Jezeli za pomoca tytulu - wpisz t.\n"); printf("Wykonawcy? No to wpisz w.\n"); printf("Za pomoca gatunku? - Wpisz g\n"); scanf(" %c", &opcja); if(opcja=='t') { printf("Wprowadzono wyszukiwanie za pomoca tytulu. Wpisz tytul piosenki.\n"); printf("Kazde slowo zaczyna sie od wielkiej litery, pomin polskie znaki."); } else if(opcja=='w') { printf("Wprowadzono wyszukiwanie za pomoca nazwy wykonawcy. Czyje wykonanie program ma znalezc?\n"); char* szukaj = (char*) malloc(NAZWYK); if(mystrcmp(szukaj, &kaw1->wykonawca)==1) { printf("Szukany wykonawca to %s, jego kawalek to %s\n", kaw1.wykonawca, kaw1.tytul); } } else if(opcja=='g') printf("Wprowadzono wyszukiwanie za pomoca gatunku. Podaj go.\n"); printf("Wprowadzono wywolanie nieprzewidzianej metody wyszukiwania\n"); } void print_info_kawalek(struct Kawalek* v) { printf("Numer na liscie: %d, tytul brzmi %s, wykonawca to %s, \n nalezy do gatunku <%s> i trwa %.2f.\n", v->nr, v->tytul, v->wykonawca, v->gatunek, v->czas); printf("Sciezka do kawalka brzmi %s, plik jest w formacie %s\n\n", v->sciezka, v->format); } int main() { char s_czy_w; struct Kawalek kaw1, kaw2, kaw3, kaw4, kaw5; printf("W bibliotece znajduje sie %d kawalkow \n", ILEKAW); co_to_za_kawalek(&kaw1, "She Loves You", "The Beatles", "Rock", 2.25, 1, "C:/Desktop/PRM/Lab6/SheLovesYou.mp3", ".mp3"); co_to_za_kawalek(&kaw2, "Everybody Loves Somebody", "Dean Martin", "Jazz", 2.46, 2, "C:/Desktop/PRM/Lab6/EverybodyLovesSomebody.wav", ".wav"); co_to_za_kawalek(&kaw3, "As Tears Go By", "The Rolling Stones", "Rock", 2.51, 3, "C:/Desktop/PRM/Lab6/AsTearsGoBy.mp3", ".mp3"); co_to_za_kawalek(&kaw4, "All Along The Watchtower", "Bob Dylan", "Folk", 2.31, 4, "C:/Desktop/PRM/Lab6/AllAlongTheWatchtower.mp3", ".mp3w"); co_to_za_kawalek(&kaw5, "All Along The Watchtower", "Jimi Hendrix", "Rock", 4.00, 5, "C:/Desktop/PRM/Lab6/AllAlongTheWatchtower.wav", ".wav"); printf("Wypisac liste utworow (w) czy wyszukac wyniku/wynikow o danej cesze(s)?\n"); scanf(" %c", &s_czy_w); switch(s_czy_w){ case 's': { szukajka_kawalek(); break; } case 'w': { print_info_kawalek(&kaw1); print_info_kawalek(&kaw2); print_info_kawalek(&kaw3); print_info_kawalek(&kaw4); print_info_kawalek(&kaw5); break; } } return 0; }