Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX_NAZIV_IGRE (10 + 1)
- #define MAX_NAZIV_ZANRA (8 + 1)
- #define MAX_NAZIV_PLATFORME (8 + 1)
- typedef struct igra_st{
- char naziv[MAX_NAZIV_IGRE];
- char zanr[MAX_NAZIV_ZANRA];
- char platforma[MAX_NAZIV_PLATFORME];
- float cena;
- struct igra_st *sl;
- } IGRA;
- void list_init(IGRA**);
- void delete_list(IGRA**);
- IGRA* make_game(char*,char*,char*,double);
- void add_to_list(IGRA**,IGRA*);
- FILE* safe_open(char*,char*);
- void load(FILE*, IGRA**);
- void save(FILE*, IGRA*,char*,char*);
- int main(int argc,char** argv){
- if(argc != 5){
- printf("Nepravilan poziv programa.");
- return EXIT_FAILURE;
- }else{
- IGRA* glava;
- FILE* file = safe_open(argv[3],"r");
- list_init(&glava);
- load(file,&glava);
- fclose(file);
- file = safe_open(argv[4],"w");
- save(file,glava,argv[1],argv[2]);
- fclose(file);
- delete_list(&glava);
- return EXIT_SUCCESS;
- }
- }
- void list_init(IGRA** glava){
- *glava = NULL;
- return;
- }
- void delete_list(IGRA** glava){
- IGRA* tek;
- while(*glava != NULL){
- tek = *glava;
- *glava = (*glava)->sl;
- tek->sl = NULL;
- free(tek);
- }
- return;
- }
- IGRA* make_game(char* tnaziv,char* tzanr,char* tplatforma,double tcena){
- IGRA* new = (IGRA*)malloc(sizeof(IGRA));
- if(new == NULL){
- printf("Nema dosta memorije.\n");
- exit(EXIT_FAILURE);
- }
- strcpy(new->naziv,tnaziv);
- strcpy(new->zanr,tzanr);
- strcpy(new->platforma,tplatforma);
- new->cena = tcena;
- new->sl = NULL;
- return new;
- }
- void add_to_list(IGRA** glava,IGRA* new){
- if(*glava == NULL){
- *glava = new;
- }else{
- IGRA* tek = *glava;
- while(tek->sl != NULL){
- tek = tek->sl;
- }
- tek->sl = new;
- }
- return;
- }
- FILE* safe_open(char* name,char* mode){
- FILE* f = fopen(name,mode);
- if(f == NULL){
- printf("Nije pronadjen fajl %s.\n",name);
- exit(EXIT_FAILURE);
- }
- return f;
- }
- void load(FILE* f, IGRA** glava){
- char t_igra[MAX_NAZIV_IGRE],
- t_zanr[MAX_NAZIV_ZANRA],
- t_platforma[MAX_NAZIV_PLATFORME];
- float t_cena;
- while(fscanf(f,"%s %s %s %f",
- t_igra,
- t_zanr,
- t_platforma,
- &t_cena) != EOF){
- add_to_list(glava,make_game(t_igra,t_zanr,t_platforma,t_cena));
- }
- return;
- }
- void save(FILE* f, IGRA* glava,char* param_platf,char* param_zanr){
- IGRA* min = NULL,
- * tek = glava;
- while(tek != NULL){
- fprintf(f,"%-10s %-8s %-8s %5.2f\n",
- tek->naziv,tek->zanr,tek->platforma,tek->cena);
- if((strcmp(tek->platforma,param_platf) == 0) && (strcmp(tek->zanr,param_zanr) == 0)){
- if(min == NULL){
- min = tek;
- }else{
- if(tek->cena < min->cena){
- min = tek;
- }
- }
- }
- tek = tek->sl;
- }
- if(min == NULL){
- fprintf(f,"\nZa %s platformu ne postoje '%s' igre!",param_platf,param_zanr);
- }else{
- fprintf(f,"\nNajpovoljnija '%s' igra za %s platformu je:\n%s %.2f",min->zanr,min->platforma,min->naziv,min->cena);
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment