Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX_SIZE (30 + 1)
- typedef struct slatkis_st{
- char naziv[MAX_SIZE];
- double kolicina;
- unsigned int gramaza;
- char vrsta[MAX_SIZE];
- struct slatkis_st *sl;
- }SLATKISH;
- void list_init(SLATKISH**);
- void delete_list(SLATKISH**);
- SLATKISH* make_slatkish(char*,double,unsigned int,char*);
- void add_to_list(SLATKISH**,SLATKISH*);
- FILE* safe_open(char*,char*);
- void load(FILE*,SLATKISH**);
- void save(FILE*,SLATKISH*,char*);
- int main(int argc,char** argv){
- if(argc != 4){
- printf("Nepravilan poziv programa.");
- return EXIT_FAILURE;
- }else{
- SLATKISH *glava;
- FILE *file = safe_open(argv[2],"r");
- list_init(&glava);
- load(file,&glava);
- fclose(file);
- file = safe_open(argv[3],"w");
- save(file,glava,argv[1]);
- fclose(file);
- delete_list(&glava);
- return EXIT_SUCCESS;
- }
- }
- void list_init(SLATKISH** glava){
- *glava = NULL;
- return;
- }
- void delete_list(SLATKISH** glava){
- SLATKISH *t;
- while(*glava != NULL){
- t = *glava;
- *glava = (*glava)->sl;
- free(t);
- }
- return;
- }
- SLATKISH* make_slatkish(char* naziv,double kolicina,unsigned int gramaza,char* vrsta){
- SLATKISH *new = (SLATKISH*)malloc(sizeof(SLATKISH));
- if(new == NULL){
- printf("Nije moguce zauzeti memoriju.");
- exit(EXIT_FAILURE);
- }
- strcpy(new->naziv,naziv);
- strcpy(new->vrsta,vrsta);
- new->kolicina = kolicina;
- new->gramaza = gramaza;
- new->sl = NULL;
- return new;
- }
- void add_to_list(SLATKISH** glava,SLATKISH* new){
- if(*glava == NULL){
- *glava = new;
- }else{
- SLATKISH* 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.",name);
- exit(EXIT_FAILURE);
- }
- return f;
- }
- void load(FILE* f,SLATKISH** glava){
- char naziv[MAX_SIZE],
- vrsta[MAX_SIZE];
- double kolicina;
- unsigned int gramaza;
- while(fscanf(f,"%s %lf %u %s",
- naziv,
- &kolicina,
- &gramaza,
- vrsta) != EOF){
- add_to_list(glava,make_slatkish(naziv,kolicina,gramaza,vrsta));
- }
- return;
- }
- void save(FILE* f,SLATKISH* glava,char* param){
- SLATKISH* t = glava,
- * max = NULL;
- while(t != NULL){
- if(strcmp(t->vrsta,param) == 0){
- double tmp = t->kolicina*(t->gramaza/100.);
- fprintf(f,"%s %u %.2lf\n",t->naziv,t->gramaza,t->kolicina);
- if(max == NULL){
- max = t;
- }else{
- if( (max->kolicina*(max->gramaza/100.)) < tmp){
- max = t;
- }
- }
- }
- t = t->sl;
- }
- if(max == NULL){
- fprintf(f,"\nNe postoji max el.");
- }else{
- fprintf(f,"\nSlatkis sa najvise secera je: %s\nKolicina secera je: %.2lf",max->naziv,max->kolicina*(max->gramaza/100.));
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment