#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXG 3
#define MAXI 11
typedef struct GORIVO
{
char grad[MAXG];
char gorivo[MAXI];
float cena;
struct GORIVO *sledeci;
}GORIVO;
FILE *SafeOpen(char Ime[],char Mod[],int error)
{
FILE *fp=fopen(Ime,Mod);
if(fp==NULL)
{
printf("Nije moguce otvoriti fajl");
exit(error);
}
return fp;
}
void Inicijalizacija(GORIVO **glava)
{
*glava=NULL;
}
GORIVO *KreirajCvor(char grad[],char gorivo[],float cena)
{
GORIVO *novi=(GORIVO *)malloc(sizeof(GORIVO));
if(novi==NULL)
{
printf("Nema dovoljno RAM-a");
exit(21);
}
strcpy(novi->grad,grad);
strcpy(novi->gorivo,gorivo);
novi->cena=cena;
novi->sledeci=NULL;
return novi;
}
void SpojiCvor(GORIVO **glava,GORIVO *novi)
{
if(*glava==NULL)
{
*glava=novi;
return;
}
int nakraj=1;
GORIVO *tek,*pret;
tek=*glava;
pret=*glava;
if(novi->cena<tek->cena)
{
novi->sledeci=*glava;
*glava=novi;
return;
}
while(tek!=NULL)
{
if(novi->cena<tek->cena)
{
nakraj=0;
break;
}
pret=tek;
tek=tek->sledeci;
}
if(nakraj==1)
{
pret->sledeci=novi;
}
else
{
novi->sledeci=tek;
pret->sledeci=novi;
}
}
void KreirajListu(GORIVO **glava,FILE *ulaz)
{
char grad[MAXG];
char gorivo[MAXI];
float cena;
while(fscanf(ulaz,"%s %s %f",grad,gorivo,&cena)!=EOF)
{
GORIVO *novi=KreirajCvor(grad,gorivo,cena);
SpojiCvor(glava,novi);
}
}
void SacuvajListu(GORIVO *glava,FILE *izlaz)
{
if(glava!=NULL)
{
fprintf(izlaz,"%.2f %s %sn",glava->cena,glava->grad,glava->gorivo);
SacuvajListu(glava->sledeci,izlaz);
}
}
void ProsecnaCena(GORIVO *glava,FILE *izlaz,char vrsta_goriva[])
{
if(glava==NULL)
{
printf("Lista je prazna");
return;
}
int br=0;
float suma=0;
float S;
while(glava!=NULL)
{
if(strcmp(glava->gorivo,vrsta_goriva)==0)
{
br++;
suma+=glava->cena;
}
glava=glava->sledeci;
}
S=(float)suma/br;
fprintf(izlaz,"Srednja vrednost cene goriva tipa %s je:n%.2f ",vrsta_goriva,S);
}
void UnistiListu(GORIVO **glava)
{
if(*glava!=NULL)
{
UnistiListu(&((*glava)->sledeci));
free(*glava);
*glava=NULL;
}
}
int main(int brArg,char *Arg[])
{
GORIVO *glava;
if(brArg!=4)
{
printf("Niste uneli odgovarajuc broj argumenata");
exit(42);
}
char *ulaz_ime=Arg[2];
FILE *ulaz=SafeOpen(ulaz_ime,"r",1);
char *izlaz_ime=Arg[3];
FILE *izlaz=SafeOpen(izlaz_ime,"w",2);
Inicijalizacija(&glava);
KreirajListu(&glava,ulaz);
SacuvajListu(glava,izlaz);
ProsecnaCena(glava,izlaz,Arg[1]);
UnistiListu(&glava);
fclose(ulaz);
fclose(izlaz);
return 0;
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}