Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX_GRAD (2 + 1)
- #define MAX_MESO (20 + 1)
- typedef struct meso_st{
- char grad[MAX_GRAD];
- char meso[MAX_MESO];
- double cena;
- struct meso_st *sl;
- } MESO;
- //LISTA
- void list_init(MESO**);
- MESO* napravi_cvor(char*,char*,double);
- void delete_list(MESO**);
- void dodaj_u_cvor(MESO**,MESO*);
- //FAJLOVI
- FILE* safe_open(char*,char*);
- void ucitaj_podatke(MESO**,FILE*);
- void ispisi(MESO*, FILE*,char*);
- int main(int argc, char** argv){
- if(argc != 4){
- printf("Nepravilan poziv programa, primer: %s junetina cene_mesa.txt analiza.txt\n", argv[0]);
- return EXIT_FAILURE;
- }else{
- MESO* glava;
- FILE* file = safe_open(argv[2],"r");
- list_init(&glava);
- ucitaj_podatke(&glava,file);
- fclose(file);
- file = safe_open(argv[3],"w");
- ispisi(glava,file,argv[1]);
- fclose(file);
- delete_list(&glava);
- return EXIT_SUCCESS;
- }
- }
- void list_init(MESO **glava){
- *glava = NULL;
- }
- MESO* napravi_cvor(char* tgrad,char* tmeso,double tcena){
- MESO *tmp = (MESO*)malloc(sizeof(MESO));
- if(tmp == NULL){
- printf("nema dosta mesta u memoriji.\n");
- exit(EXIT_FAILURE);
- }else{
- strcpy(tmp->grad,tgrad);
- strcpy(tmp->meso,tmeso);
- tmp->cena = tcena;
- tmp->sl = NULL;
- return tmp;
- }
- }
- void dodaj_u_cvor(MESO** glava,MESO* new){
- if(*glava == NULL){
- *glava = new;
- }else{
- MESO* tek = *glava;
- while(tek->sl != NULL){
- tek = tek->sl;
- }
- tek->sl = new;
- }
- return;
- }
- void delete_list(MESO** glava){
- MESO* tmp;
- while(*glava != NULL){
- tmp = *glava;
- *glava = (*glava)->sl;
- tmp->sl = NULL;
- free(tmp);
- }
- return;
- }
- FILE* safe_open(char* name,char* mode){
- FILE* f = fopen(name,mode);
- if(f == NULL){
- printf("Nije moguce pronaci zadanu ulaznu datoteku: %s\n",name);
- exit(EXIT_FAILURE);
- }else{
- return f;
- }
- }
- void ucitaj_podatke(MESO** glava,FILE *f){
- char tmp_grad[MAX_GRAD],
- tmp_meso[MAX_MESO];
- double tmp_cena;
- while(fscanf(f,"%s %s %lf",
- tmp_grad,
- tmp_meso,
- &tmp_cena) != EOF){
- dodaj_u_cvor(glava,napravi_cvor(tmp_grad,tmp_meso,tmp_cena));
- }
- return;
- }
- void ispisi(MESO* glava, FILE* f,char* param){
- MESO* min = NULL,
- * tek = glava;
- while(tek != NULL){
- fprintf(f,"%6.2lf %s %s\n",tek->cena,tek->grad,tek->meso);
- if(strcmp(tek->meso,param) == 0){
- if(min == NULL){
- min = tek;
- }else{
- if((tek->cena) < (min->cena)){
- min = tek;
- }
- }
- }
- tek = tek->sl;
- }
- if(min == NULL){
- fprintf(f,"\nNije pronadjeno meso %s.",param);
- }else{
- fprintf(f,"\nNajpovoljnije '%s' je:\n%6.2lf %s %s",param,min->cena,min->grad,min->meso);
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment