Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #define MAX_BALET (8 + 1)
- #define MAX_REZERVISAO (25 + 1)
- typedef struct balet{
- unsigned int r_broj;
- char naziv[MAX_BALET];
- char rezervisao[MAX_REZERVISAO];
- unsigned int cena;
- struct balet *sl;
- }BALET;
- void list_init(BALET**);
- void delete_list(BALET**);
- BALET* make_balet(unsigned int,char*,char*,unsigned int);
- void add_to_list(BALET**,BALET*);
- FILE* safe_open(char*,char*);
- void load(FILE*,BALET**);
- int save(BALET*,char*);
- void save_seats(BALET*,char*);
- void to_lower(char*,char*);
- int main(int argc, char** argv){
- if(argc != 2){
- printf("Nepravilan poziv programa.\n");
- return EXIT_FAILURE;
- }else{
- BALET* glava;
- FILE * file = safe_open(argv[1],"r");
- char naziv[MAX_BALET];
- list_init(&glava);
- load(file,&glava);
- fclose(file);
- printf("Naziv baleta: ");
- scanf("%s",naziv);
- if(save(glava,naziv) == 0){
- save_seats(glava,naziv);
- }
- delete_list(&glava);
- return EXIT_SUCCESS;
- }
- }
- void list_init(BALET** glava){
- *glava = NULL;
- return;
- }
- void delete_list(BALET** glava){
- BALET* pom;
- while(*glava != NULL){
- pom = *glava;
- *glava = (*glava)->sl;
- free(pom);
- }
- return;
- }
- BALET* make_balet(unsigned int r_broj,char* naziv,char* rezervisao,unsigned int cena){
- BALET* new = (BALET*)malloc(sizeof(BALET));
- if(new == NULL){
- printf("Nije moguce zauzeti memoriju.\n");
- exit(EXIT_FAILURE);
- }
- strcpy(new->naziv,naziv);
- strcpy(new->rezervisao,rezervisao);
- new->r_broj = r_broj;
- new->cena = cena;
- new->sl = NULL;
- return new;
- }
- void add_to_list(BALET** glava,BALET* new){
- if(*glava == NULL){
- *glava = new;
- }else{
- BALET* t = *glava;
- while(t->sl != NULL){
- t = t->sl;
- }
- t->sl = new;
- }
- return;
- }
- FILE* safe_open(char* name,char* mode){
- FILE* f = fopen(name,mode);
- if(f == NULL){
- printf("Nije moguce otvoriti fajl %s.\n",name);
- exit(EXIT_FAILURE);
- }
- return f;
- }
- void load(FILE* f,BALET** glava){
- unsigned int r_broj,
- cena;
- char naziv[MAX_BALET],
- rezervisao[MAX_REZERVISAO];
- while(fscanf(f,"%u %s %s %u",
- &r_broj,
- naziv,
- rezervisao,
- &cena) != EOF){
- add_to_list(glava,make_balet(r_broj,naziv,rezervisao,cena));
- }
- return;
- }
- int save(BALET* glava,char* param){
- int count = 0;
- unsigned int suma = 0;
- char naziv[MAX_BALET] = "";
- to_lower(param,param);
- while(glava != NULL){
- char tmp[MAX_BALET] = "";
- to_lower(glava->naziv,tmp);
- if(strcmp(param,tmp) == 0){
- suma += glava->cena;
- count++;
- if(strcmp(naziv,"") == 0){
- strcpy(naziv,glava->naziv);
- }
- }
- glava = glava->sl;
- }
- if(count > 0){
- printf("Ukupno prodatih karata za balet pod nazivom %s je %d.\nUkupna zarada je %u dinara.\n\n",naziv,count,suma);
- return 0;
- }else{
- printf("Za unete podatke od strane korisnika ne postoje podaci.\n");
- return 1;
- }
- }
- void to_lower(char* param,char* out){
- int i;
- for(i = 0; i < strlen(param); i++){
- if(param[i] != '\0'){
- out[i] = tolower(param[i]);
- }else{
- out[i] = param[i];
- }
- }
- return;
- }
- void save_seats(BALET* glava,char* param){
- to_lower(param,param);
- while(glava != NULL){
- char tmp[MAX_BALET] = "";
- to_lower(glava->naziv,tmp);
- if(strcmp(tmp,param) == 0){
- printf("Sediste: %u Rezervisao: %s Cena: %u din\n",glava->r_broj,glava->rezervisao,glava->cena);
- }
- glava = glava->sl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment