Advertisement
Guest User

primeri

a guest
Dec 5th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.36 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.     }
  32.     struct paket_st paket[MAX_SIZE];
  33.     struct cena_st cena[MAX_SIZE];
  34.  
  35.     char *in_c=args[2];
  36.     char *out_f=args[3];
  37.  
  38.     FILE *in=safe_fopen(in_c,"r",2);
  39.     FILE *out=safe_fopen(out_f,"w",3);
  40.  
  41.     int n=unos(in,paket);
  42.     int KW=atoi(args[1]);
  43.  
  44.     transform(paket,cena,n,KW);
  45.     izlaz(out,cena,n);
  46.  
  47.     fclose(out);
  48.     fclose(in);
  49.  
  50.     return 0;
  51. }
  52.  
  53. FILE *safe_fopen(char filename[], char model[], int error_code){
  54.     FILE *fp=fopen(filename,model);
  55.     if(fp ==NULL){
  56.         printf("Cant open file %s",filename);
  57.         exit(error_code);
  58.     }
  59.     return fp;
  60. }
  61.  
  62. int unos(FILE *in,struct paket_st paket[]){
  63.     int n=0;
  64.     while (fscanf(in," %s %s %u %u %lf",
  65.             paket[n].zemlja,
  66.             paket[n].operater,
  67.             &paket[n].pretplata,
  68.             &paket[n].KWh_pretplata,
  69.             &paket[n].cena_KWh)){
  70.         n++;
  71.     }
  72.     return n;
  73. }
  74.  
  75. double ukupna_cena(struct paket_st paket, int KW){
  76.     double base = paket.pretplata;
  77.     int extra_kwh= KW -paket.KWh_pretplata;
  78.     if(extra_kwh>0){
  79.         base+=extra_kwh*paket.cena_KWh;
  80.     }
  81.     return base;
  82. }
  83.  
  84. void transform(struct paket_st paket[], struct cena_st cena[], int n, int KW){
  85.     for (int i = 0; i <n ; i++) {
  86.         cena[i].uku_cena=(float)ukupna_cena(*paket,KW);
  87.         strcpy(cena[i].zemlja,paket[i].zemlja);
  88.         strcpy(cena[i].operater,paket[i].operater);
  89.     }
  90. }
  91.  
  92. void izlaz(FILE *out, struct cena_st cena[], int n){
  93.     for (int i = 0; i <n ; i++) {
  94.         fprintf(out,"%f %s %s",
  95.                 cena[i].uku_cena,
  96.                 cena[i].zemlja,
  97.                 cena[i].operater);
  98.     }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement