JStefan

[Laboratoriski] Matrica

Dec 25th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.14 KB | None | 0 0
  1. /*
  2.     Матрица Problem
  3.     Од стандарден влез се читаат димензии на квадратна матрица (макс 100х100) која е составена од целобројни елементи.
  4.     Во продолжение се читаат сите елементи од матрицата соодветно.
  5.     Да се состави нова матрицаво која секој елемент од главната дијагонала ќе биде заменет со сумата на сите елементи од
  6.     истиот ред десно од елементот и елементите кои се во истата колона над елементот.
  7.     Исто така потребно е секој елемент од споредната дијагонала да се замени со сумата на елементи од иститот ред пред
  8.     елементот и елементите кои се во истата колона под елементот.
  9.     Доколку нема соодветни елементи, потребно е елементот да се постави на 0.
  10.     Доколку некој елемент се наоѓа и на главна и на споредна дијагонала, потребно е двете суми да се сумираат.
  11.     Елементите кои не се наоѓаат на некоја од дијагоналите не треба да се променат.
  12.  
  13. Пример:
  14.  
  15. За дадената матрица Аn,n:
  16.  
  17.     1 2 3
  18.     4 5 6
  19.     7 8 9
  20. Резултат:
  21.     5 2 18
  22.     4 20 6
  23.     0 8 9
  24. */
  25. #include <stdio.h>
  26. #include <stdlib.h>
  27.  
  28. int sumaGlavnaDijagonala(int I, int N, int niza[100][100]) {
  29.     int i = I-1, j = I, sum = 0;
  30.     for(; i >= 0; --i) {
  31.         sum += niza[i][j];
  32.     }
  33.     for(j = I+1, i = I; j < N; ++j) {
  34.         sum += niza[i][j];
  35.     }
  36.     return sum;
  37. }
  38.  
  39. int sumaSporednaDijagonala(int I, int N, int niza[100][100]) {
  40.     int i = I+1, j = N-I-1, sum = 0;
  41.     for(; i < N; ++i) {
  42.         sum += niza[i][j];
  43.     }
  44.     for(j = N-I-2, i = I; j >= 0; --j) {
  45.         sum += niza[i][j];
  46.     }
  47.     return sum;
  48. }
  49.  
  50. int main()
  51. {
  52.     int n,i,j;
  53.     scanf("%d", &n);
  54.  
  55.     int matr[100][100], finalMatr[100][100];
  56.  
  57.     for(i = 0; i < n; ++i) {
  58.         for(j = 0; j < n; ++j){
  59.             scanf("%d", &matr[i][j]);
  60.         }
  61.     }
  62.  
  63.     for(i = 0; i < n; ++i) {
  64.         for(j = 0; j < n; ++j){
  65.             if( i == j && j == n-i-1 ) {
  66.                 finalMatr[i][j] = sumaGlavnaDijagonala(i, n, matr) + sumaSporednaDijagonala(i, n, matr);
  67.             } else if( i == j ) {
  68.                 finalMatr[i][j] = sumaGlavnaDijagonala(i, n, matr);
  69.             } else if( j == n-i-1 ) {
  70.                 finalMatr[i][j] = sumaSporednaDijagonala(i, n, matr);
  71.             } else {
  72.                 finalMatr[i][j] = matr[i][j];
  73.             }
  74.         }
  75.     }
  76.  
  77.     printf("\n");
  78.  
  79.     for(i = 0; i < n; ++i) {
  80.         for(j = 0; j < n; ++j){
  81.             printf("%d ", finalMatr[i][j]);
  82.         }
  83.         printf("\n");
  84.     }
  85.  
  86.     return 0;
  87. }
Add Comment
Please, Sign In to add comment