Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.37 KB | None | 0 0
  1. #include "stdlib.h"
  2. #include "stdio.h"
  3. #include "string.h"
  4.  
  5. #define MAX_SIZE 20
  6.  
  7. struct paket_st{
  8.     char zemlja[MAX_SIZE];
  9.     char operater[MAX_SIZE];
  10.     unsigned pretplata;
  11.     unsigned KWh_pretplata;
  12.     double cena_KWh;
  13. };
  14.  
  15. struct cena_st{
  16.     double uku_cena;
  17.     char zemlja[MAX_SIZE];
  18.     char operater[MAX_SIZE];
  19. };
  20.  
  21.  
  22. FILE *safe_fopen(char filename[], char model[], int error_code);
  23. int unos(FILE *in,struct paket_st paket[]);
  24. double ukupna_cena(struct paket_st paket, int KW);
  25. void transform(struct paket_st paket[], struct cena_st cena[], int n, int KW);
  26. void izlaz(FILE *out, struct cena_st cena[],int n);
  27.  
  28. int main(int argv, char **args){
  29.     if(argv!=4){
  30.         printf("Wrong input!");
  31.         exit(42);
  32.     }
  33.     struct paket_st paket[MAX_SIZE];
  34.     struct cena_st cena[MAX_SIZE];
  35.  
  36.     char *in_c=args[2];
  37.     char *out_f=args[3];
  38.  
  39.     FILE *in=safe_fopen(in_c,"r",2);
  40.     FILE *out=safe_fopen(out_f,"w",3);
  41.  
  42.     int n=unos(in,paket);
  43.     int KW=atoi(args[1]);
  44.  
  45.     transform(paket,cena,n,KW);
  46.     izlaz(out,cena,n);
  47.  
  48.     fclose(out);
  49.     fclose(in);
  50.  
  51.     return 0;
  52. }
  53.  
  54. FILE *safe_fopen(char filename[], char model[], int error_code){
  55.     FILE *fp=fopen(filename,model);
  56.     if(fp ==NULL){
  57.         printf("Cant open file %s",filename);
  58.         exit(error_code);
  59.     }
  60.     return fp;
  61. }
  62.  
  63. int unos(FILE *in,struct paket_st paket[]){
  64.     int n=0;
  65.     while (fscanf(in," %s %s %u %u %lf",
  66.             paket[n].zemlja,
  67.             paket[n].operater,
  68.             &paket[n].pretplata,
  69.             &paket[n].KWh_pretplata,
  70.             &paket[n].cena_KWh)!=EOF){
  71.         n++;
  72.     }
  73.     return n;
  74. }
  75.  
  76. double ukupna_cena(struct paket_st paket, int KW){
  77.     double base = paket.pretplata;
  78.     int extra_kwh= KW -paket.KWh_pretplata;
  79.     if(extra_kwh>0){
  80.         base+=extra_kwh*paket.cena_KWh;
  81.     }
  82.     return base;
  83. }
  84.  
  85. void transform(struct paket_st paket[], struct cena_st cena[], int n, int KW){
  86.     for (int i = 0; i <n ; i++) {
  87.         cena[i].uku_cena=ukupna_cena(paket[i],KW);
  88.         strcpy(cena[i].zemlja,paket[i].zemlja);
  89.         strcpy(cena[i].operater,paket[i].operater);
  90.     }
  91. }
  92.  
  93. void izlaz(FILE *out, struct cena_st cena[], int n){
  94.     for (int i = 0; i <n ; i++) {
  95.         fprintf(out,"%7.2f %s %s\n",
  96.                 cena[i].uku_cena,
  97.                 cena[i].zemlja,
  98.                 cena[i].operater);
  99.     }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement