Dimitrija

Laboratoriski ISPITNI - 5/6 SP

Jan 5th, 2021 (edited)
741
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.38 KB | None | 0 0
  1. #include <stdio.h>
  2. #define MAX 100
  3.  
  4. /*
  5.  
  6. Дадена е текстуална датотека (livce.txt) која претставува ливче во спортска обложувалница.
  7.  
  8. На почетокот во датотеката, во посебен ред е запишана сумата на уплата (цел број).
  9.  
  10. Потоа во секој ред од датотеката е запишан по еден тип во следниот формат:
  11.  
  12. ab12 1 1.25
  13. Првиот број е шифрата на типот (низа од знаци која не е подолга од 9 знаци), вториот број е типот (може да биде 1, 0 или 2) додека третиот број е коефициентот (реален број).
  14.  
  15. Ваша задача е да се испечати типот со најголем коефициент како и можната добивка на ливчето. Доколку има повеќе типови со ист максимален коефициент, да се испечати првиот.
  16.  
  17. Можната добивка се пресметува како производ на сите коефициенти со сумата на уплата.
  18.  
  19. For example:
  20.  
  21. Input  
  22. 100
  23. ab12 1 1.2
  24. c234 2 2.0
  25. #
  26. Result
  27. c234 2 2.00
  28. 240.00
  29.  
  30. */
  31.  
  32.  
  33.  
  34.  
  35. // ne menuvaj ovde
  36. void wf() {
  37.     FILE *f = fopen("livce.txt", "w");
  38.     char c;
  39.     while((c = getchar()) != '#') {
  40.         fputc(c, f);
  41.     }
  42.     fclose(f);
  43. }
  44.  
  45. int main() {
  46.     wf();
  47.     FILE *dat;
  48.     if ((dat = fopen("livce.txt", "r"))== NULL){
  49.         fprintf(stderr,"ERROR");
  50.         return -1;
  51.     }
  52.     char sif[MAX][MAX];
  53.     int tip[MAX];
  54.     double koef[MAX],max=0;
  55.     int kol=0,mkol;
  56.     double dobiv=1;
  57.     int uplata,i;
  58.     fscanf(dat,"%d",&uplata);
  59.    
  60.     while (!feof(dat)){
  61.         fscanf(dat,"%s",&sif[kol][0]);
  62.         fscanf(dat,"%d",&tip[kol]);
  63.         fscanf(dat,"%lf",&koef[kol]);
  64.         if (koef[kol] > max){
  65.             max = koef[kol];
  66.             mkol = kol;
  67.         }
  68.         kol++;
  69.     }
  70.     kol--;
  71.    
  72.     for (i=0;sif[mkol][i] != '\0';i++){
  73.         printf("%c",sif[mkol][i]);
  74.     }
  75.  
  76.     printf(" %d %0.2lf\n",tip[mkol],koef[mkol]);
  77.    
  78.    
  79.    
  80.     for (i=0;i<kol;i++){
  81.         dobiv *= koef[i];
  82.     }
  83.     dobiv *= uplata;
  84.     printf("%.2lf",dobiv);
  85.    
  86.    
  87.     fclose(dat);
  88.  
  89.     return 0;    
  90.  
  91. }
Add Comment
Please, Sign In to add comment