MartinSRB

Резервација карата за балетску представу

Dec 16th, 2021 (edited)
1,427
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.07 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5.  
  6. #define MAX_BALET (8 + 1)
  7. #define MAX_REZERVISAO (25 + 1)
  8.  
  9. typedef struct balet{
  10.     unsigned int r_broj;
  11.     char naziv[MAX_BALET];
  12.     char rezervisao[MAX_REZERVISAO];
  13.     unsigned int cena;
  14.     struct balet *sl;
  15. }BALET;
  16.  
  17. void list_init(BALET**);
  18. void delete_list(BALET**);
  19. BALET* make_balet(unsigned int,char*,char*,unsigned int);
  20. void add_to_list(BALET**,BALET*);
  21.  
  22.  
  23. FILE* safe_open(char*,char*);
  24. void load(FILE*,BALET**);
  25. int save(BALET*,char*);
  26. void save_seats(BALET*,char*);
  27.  
  28. void to_lower(char*,char*);
  29.  
  30. int main(int argc, char** argv){
  31.     if(argc != 2){
  32.         printf("Nepravilan poziv programa.\n");
  33.         return EXIT_FAILURE;
  34.     }else{
  35.         BALET* glava;
  36.         FILE * file = safe_open(argv[1],"r");
  37.         char naziv[MAX_BALET];
  38.         list_init(&glava);
  39.         load(file,&glava);
  40.         fclose(file);
  41.         printf("Naziv baleta: ");
  42.         scanf("%s",naziv);
  43.         if(save(glava,naziv) == 0){
  44.             save_seats(glava,naziv);
  45.         }
  46.         delete_list(&glava);
  47.         return EXIT_SUCCESS;
  48.     }
  49. }
  50.  
  51. void list_init(BALET** glava){
  52.     *glava = NULL;
  53.     return;
  54. }
  55.  
  56. void delete_list(BALET** glava){
  57.     BALET* pom;
  58.     while(*glava != NULL){
  59.         pom = *glava;
  60.         *glava = (*glava)->sl;
  61.         free(pom);
  62.     }
  63.     return;
  64. }
  65.  
  66. BALET* make_balet(unsigned int r_broj,char* naziv,char* rezervisao,unsigned int cena){
  67.     BALET* new = (BALET*)malloc(sizeof(BALET));
  68.     if(new == NULL){
  69.         printf("Nije moguce zauzeti memoriju.\n");
  70.         exit(EXIT_FAILURE);
  71.     }
  72.     strcpy(new->naziv,naziv);
  73.     strcpy(new->rezervisao,rezervisao);
  74.     new->r_broj = r_broj;
  75.     new->cena   = cena;
  76.     new->sl     = NULL;
  77.     return new;
  78. }
  79.  
  80. void add_to_list(BALET** glava,BALET* new){
  81.     if(*glava == NULL){
  82.         *glava = new;
  83.     }else{
  84.         BALET* t = *glava;
  85.         while(t->sl != NULL){
  86.             t = t->sl;
  87.         }
  88.         t->sl = new;
  89.     }
  90.     return;
  91. }
  92.  
  93. FILE* safe_open(char* name,char* mode){
  94.     FILE* f = fopen(name,mode);
  95.     if(f == NULL){
  96.         printf("Nije moguce otvoriti fajl %s.\n",name);
  97.         exit(EXIT_FAILURE);
  98.     }
  99.     return f;
  100. }
  101.  
  102. void load(FILE* f,BALET** glava){
  103.     unsigned int r_broj,
  104.                  cena;
  105.     char         naziv[MAX_BALET],
  106.                  rezervisao[MAX_REZERVISAO];
  107.     while(fscanf(f,"%u %s %s %u",
  108.                                 &r_broj,
  109.                                 naziv,
  110.                                 rezervisao,
  111.                                 &cena) != EOF){
  112.         add_to_list(glava,make_balet(r_broj,naziv,rezervisao,cena));
  113.     }
  114.     return;
  115. }
  116.  
  117. int save(BALET* glava,char* param){
  118.     int            count = 0;
  119.     unsigned int   suma  = 0;
  120.     char           naziv[MAX_BALET] = "";
  121.     to_lower(param,param);
  122.     while(glava != NULL){
  123.         char tmp[MAX_BALET] = "";
  124.         to_lower(glava->naziv,tmp);
  125.         if(strcmp(param,tmp) == 0){
  126.             suma += glava->cena;
  127.             count++;
  128.             if(strcmp(naziv,"") == 0){
  129.                 strcpy(naziv,glava->naziv);
  130.             }
  131.         }
  132.         glava = glava->sl;
  133.     }
  134.     if(count > 0){
  135.         printf("Ukupno prodatih karata za balet pod nazivom %s je %d.\nUkupna zarada je %u dinara.\n\n",naziv,count,suma);
  136.         return 0;
  137.     }else{
  138.         printf("Za unete podatke od strane korisnika ne postoje podaci.\n");
  139.         return 1;
  140.     }
  141. }
  142.  
  143. void to_lower(char* param,char* out){
  144.     int i;
  145.     for(i = 0; i < strlen(param); i++){
  146.         if(param[i] != '\0'){
  147.             out[i] = tolower(param[i]);
  148.         }else{
  149.             out[i] = param[i];
  150.         }
  151.     }
  152.     return;
  153. }
  154.  
  155. void save_seats(BALET* glava,char* param){
  156.     to_lower(param,param);
  157.     while(glava != NULL){
  158.         char tmp[MAX_BALET] = "";
  159.         to_lower(glava->naziv,tmp);
  160.         if(strcmp(tmp,param) == 0){
  161.             printf("Sediste: %u Rezervisao: %s Cena: %u din\n",glava->r_broj,glava->rezervisao,glava->cena);
  162.         }
  163.         glava = glava->sl;
  164.     }
  165. }
Advertisement
Add Comment
Please, Sign In to add comment