Dimitrija

Laboratoriski 9 - 3 SP

Dec 27th, 2020 (edited)
1,188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.27 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <string.h>
  4. #define MAX 1000
  5.  
  6. void writeToFile() {
  7.     FILE *f = fopen("text.txt", "w");
  8.     char c;
  9.     while((c = getchar()) != '#') {
  10.         fputc(c, f);
  11.     }
  12.     fclose(f);
  13. }
  14.  
  15. int main() {
  16.     writeToFile();
  17.  
  18.     //otvarame txt fajl vo mod za chitanje
  19.     FILE *f;
  20.     if ((f = fopen("text.txt" , "r")) ==NULL){
  21.         fprintf(stderr,"ERROR");
  22.         return -1;
  23.     }
  24.    
  25.     char niza[MAX][MAX];
  26.     int i,j,kol=0,max;
  27.     int red[MAX]={0,};
  28.     char c;
  29.  
  30.     //Gi zimame SITE elementi od nizata vo char matrica
  31.     while ((c=fgetc(f) )!= EOF){
  32.         if (c=='\n'){
  33.             kol++;
  34.         }
  35.         else{
  36.         niza[kol][red[kol]]=c;
  37.         }
  38.         red[kol]++;
  39.     }
  40.  
  41.     int words[MAX]={0,};
  42.  
  43.     //Nizata words go dobiva brojot na zborovi od sekoj red vo matricata dobiena od txt dokumentot
  44.     //Ako ima prazno mesto, words[kolona]++
  45.     for (i=0;i<kol;i++){
  46.        
  47.         for (j=0;j<red[i];j++){
  48.             if (isspace(niza[i][j])){
  49.                 words[i]++;
  50.             }
  51.         }
  52.         words[i]++;
  53.     }
  54.  
  55.     max=0;
  56.     float avg=0;
  57.     /*Go pechatime brojot na zborovi od sekoja kolona i gi sobirame vo float promenliva koja podocna ja delime so brojot na koloni za da dobieme prosechna vrednost. I ISTOVREMENO naogjame koja kolona ima najgolem broj zborovi */
  58.     for (i=0;i<kol;i++){
  59.         printf("%d\n",words[i]);
  60.         avg+=words[i];
  61.             if (max <words[i]){
  62.                 max = words[i];
  63.                 j=i;
  64.             }
  65.  
  66.     }
  67.     printf("%0.2f\n",avg/=kol);
  68.    
  69.     /*Vo promenlivata j od prethodniot ciklus go zachuvavme redot kade shto ima najvekje zborovi, tuka kje go iskoristime za da ja  
  70.     ispechatime matricata so taa kolona i gi konvertirame site mali bukvi golemi, a site golemi mali */
  71. //NOTE: prviot element vo sekoja rechenica od matricata osven prvata imashe prazno mesto, ternaren operator vo for go popravi toa :))
  72.  
  73.     for (i=(j==0)?0:1;i<red[j];i++){
  74.         if (isupper(niza[j][i])){
  75.             printf("%c",tolower(niza[j][i]));
  76.         }
  77.         else if (islower(niza[j][i])){
  78.             printf("%c",toupper(niza[j][i]));
  79.         }
  80.         else{
  81.             printf("%c",niza[j][i]);
  82.         }
  83.  
  84.     }
  85.  
  86.     fclose(f);
  87.     return 0;
  88. }
  89.  
Add Comment
Please, Sign In to add comment