Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- struct plyta{ /*struktura przechowujca informacje o pycie */
- char tytul[30]; /*pola autor i tytu mog mie栭aksymalnie 64 znaki*/
- char tworca[30];
- char gatunek[30];
- int cena;
- int rok_wydania;
- int dlugosc;
- };
- int string_comparator(const void *a, const void *b){ /*funkcja wspomagajca qsort, decyduje o tym jak sortowa栥lementy, qsort przekazuje tu dwa wskaniki const void */
- struct plyta const *ia = a;
- struct plyta const *ib = b;
- return strcmp(ia->tytul, ib->tytul); /*funkcja zwraca liczb0, gdy s1 < s2, 0 gdy s1 jest taki sam jak s2 oraz liczb꠷iꫳz od zera gdy s1 > s2*/
- }
- int main(int argc, char *argv[]){
- int n, i, pom2;
- struct plyta plyty[1000]; /*maksymalna liczba pyt to 1000*/
- char plik[30], tytul[30], pom, wybor;
- FILE *in, *out; /* zmienne przechowujce wskaniki do plik/
- n = 0;
- while(1){ /*nieskona p괬a w kt naley wpisa栫olejne polecenia*/
- printf("Wybierz polecenie (Wpisz literke) \n");
- printf("spis polecen:\n c <-odczyt pliku \n d <-dodanie plyty \n w <- wypis listy plyt \n z <- zapis listy plyt\n k <- usuwanie plyty z listy \n s <- szukaj plyty \n q <- zamknij program \n");
- scanf("%c", &wybor); /*wczytywanie z pyty*/
- if( wybor == 'c'){ /*czytanie z pliku do programu*/
- printf("Podaj nazwe pliku\n");
- scanf("%s", plik);
- in = fopen(plik, "r"); /*otwiera plik in.txt, z opcj czytania */
- if (in == NULL){ /*sprawdzam czy plik istnieje*/
- printf("Plik wejsciowy nie istnieje\n");
- return 0;
- }
- else{
- fscanf(in, "%d", &n);
- for( i = 0; i < n; i++){
- fscanf(in, "%s", plyty[i].tytul); /*wczytujemy jedn warto栺 pliku wejciowego*/
- fscanf(in, "%s", plyty[i].tworca);
- fscanf(in, "%s", plyty[i].gatunek);
- fscanf(in, "%d", &(plyty[i].cena));
- fscanf(in, "%d", &(plyty[i].rok_wydania));
- fscanf(in, "%d", &(plyty[i].dlugosc));
- }
- }
- fclose(in); /*zamykamy strumieiku wyjciowego*/
- }
- else if( wybor == 'd'){ /*zmienna pomocnicza wyapujca biae znaki */
- printf("Dane: Tytul Autor Gatunek Cena Rok_wydania Dlugosc\n");
- scanf( "%c%s", &pom, plyty[n].tytul); /*wczytywanie z pliku wejciowego*/
- scanf( "%c%s", &pom, plyty[n].tworca);
- scanf( "%c%s", &pom, plyty[n].gatunek);
- scanf( "%d", &(plyty[n].cena));
- scanf( "%d", &(plyty[n].rok_wydania));
- scanf( "%d", &(plyty[n].dlugosc));
- n++;
- }
- else if( wybor == 'w'){ /*wypisywanie do terminala */
- qsort(plyty, n, sizeof(struct plyta), string_comparator); /*funkcja ktporje) */
- for(i = 0; i < n; i++){
- /*wczytywanie do terminala */
- printf("%s %s %s %d %d %d\n", plyty[i].tytul, plyty[i].tworca, plyty[i].gatunek, plyty[i].cena, plyty[i].rok_wydania, plyty[i].dlugosc);
- }
- }
- else if( wybor == 'z'){ /*zapisywanie do pliku */
- printf("Podaj nazwe pliku\n");
- scanf("%s", plik);
- out = fopen(plik,"w"); /*otwiera plik, z opcj wpisywania*/
- fprintf(out, "%d\n", n);
- for(i = 0; i < n; i++){
- fprintf(out, "%s %s %s %d %d %d\n", plyty[i].tytul, plyty[i].tworca, plyty[i].gatunek, plyty[i].cena, plyty[i].rok_wydania, plyty[i].dlugosc);
- }
- fclose (out);
- }
- else if( wybor == 'k'){ /*kasuje pyt wybranym tytule */
- scanf("%s", tytul);
- for( i = 0; i < n; i++){ /*usuwanie po tytule*/
- if(strcmp(tytul, plyty[i].tytul) == 0){
- plyty[i] = plyty[n-1]; /* plyta o indeksie 'i' zamienia si pyt o indeksie ostatnim, pej wielkoc tablicy jest zmniejszana */
- n--;
- printf("usunieto\n");
- }
- }
- }
- else if( wybor == 's'){ /*wyszukuje informacji o pycie po jej tytule */
- printf("Wpisz tytul plyty\n");
- scanf("%s", tytul);
- for( i = 0; i < n; i++){ /*wyszukiwanie po tytule*/
- pom2 = 0; /*zmienna sprawdza czy tytu istnieje w tablicy */
- if(strcmp(tytul, plyty[i].tytul) == 0){
- printf("%s %s %s %d %d %d\n", plyty[i].tytul, plyty[i].tworca, plyty[i].gatunek, plyty[i].cena, plyty[i].rok_wydania, plyty[i].dlugosc);
- pom2 = 1;
- }
- if(pom2 == 0){
- printf("Nie ma takiego tytulu\n");
- }
- }
- }
- else if( wybor == 'q'){ /* ko program */
- break;
- }
- else
- printf("Nie znaleziono klucza\n");
- scanf("%c", &pom); /*wczytuje puste znaki */
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement