Dimitrija

Laboratoriski 9 - 2 SP

Dec 27th, 2020 (edited)
703
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #define MAX 100
  3.  
  4. void writeToFile() {
  5.     FILE *f = fopen("input.txt", "w");
  6.     char c;
  7.     while((c = getchar()) != '#') {
  8.         fputc(c, f);
  9.     }
  10.     fclose(f);
  11. }
  12.  
  13. void printFile() {
  14.  
  15.     FILE *f=fopen("output.txt","r");
  16.     char line[100];
  17.     while(!feof(f)){
  18.         fgets(line,100,f);
  19.         if (feof(f))
  20.             break;
  21.         printf("%s",line);
  22.     }
  23.     fclose(f);
  24. }
  25.  
  26. int main() {
  27.     /* Vo zadachata nebeshe naglaseno no programata go kuca brojot na elementi na kvadratnata matrica na prazno pred da ja popolni nizata, tuka eden vid ja fakjame taa cifra preku scanf */
  28.     int a;
  29.     scanf("%d",&a);
  30.    
  31.     writeToFile();
  32.  
  33.     //otvarame input.txt datoteka vo mod za chitanje
  34.     FILE *f;
  35.     if ((f = fopen("input.txt","r")) == NULL ){
  36.         printf("ERROR");
  37.         return -1;
  38.     }
  39.    
  40.     int n=0,i,j,sum=0;
  41.     char niza[MAX];
  42.     int matrice[MAX][MAX];
  43.    
  44.     /* ALTERNATIVEN NACHIN da go dobieme brojot na redici/koloni vo kvadratnata matrica, fgets chita elementi se do krajot na prviot red +1, matricata e kvadratna taka da samo ni treba da go dobieme n od prviot red*/
  45.     while (fgets(niza,MAX,f)){
  46.         n++;
  47.     }
  48.     n--;
  49.    
  50.     //Rewind ja vrakja nevidlivata strelka vo txt dokumentot na pochetok, polse koristenje na prethodniot while ciklus
  51.     rewind(f);
  52.  
  53.     //Ja popolnuvame matricata so elementite od output txt dokumentot I gi sobirame elementite na glavnata dijagonala vo sum
  54.     for (i=0;i<n;i++){
  55.         for (j=0;j<n;j++){
  56.             fscanf(f,"%d",&matrice[i][j]);
  57.             if (i==j){
  58.                 sum+=matrice[i][j];
  59.             }
  60.         }
  61.     }
  62.  
  63.     fclose(f);
  64.     //otvarame output.txt datoteka vo mod za pechatenje (planirame da ja vneseme nashata matrica vo nea)
  65.     FILE *end;
  66.     if ((end = fopen("output.txt","w")) == NULL){
  67.         fprintf(stderr,"ERROR");
  68.         return -1;
  69.     }
  70.  
  71. //Go pechatime zbirot na glavnata dijagonala samo ako j>i
  72. //      j=0  j=1  j=2  j=3
  73. //  i=0  /   015  015  015
  74. //  i=1  /    /   015  015
  75. //  i=2  /    /    /   015
  76. //  i=3  /    /    /    /
  77.  
  78.     for (i=0;i<n;i++){
  79.         for (j=0;j<n;j++){
  80.            
  81.             if (j>i){
  82.                 fprintf(end,"%03d",sum);
  83.             }
  84.             else{
  85.                 fprintf(end,"   ");
  86.             }
  87.             fprintf(end," ");
  88.         }
  89.         fprintf(end,"\n");
  90.     }
  91.  
  92.  
  93.     fclose(end);
  94.     printFile();
  95.  
  96.     return 0;
  97. }
Add Comment
Please, Sign In to add comment