Advertisement
xotohop

cp3_3

Dec 26th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.79 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <time.h>
  4.  
  5. #define RAND(a,b) (a + rand() % (b - a))
  6.  
  7. int sum_row(int **x, int n, int i)
  8. {
  9.     int j, sum = 0;
  10.     for (j = 0; j < n; j++)
  11.         sum += x[i][j];
  12.     return sum;
  13. }
  14.  
  15. int check(int **x, int n)
  16. {
  17.     int i;
  18.     for (i = 0; i < n; i++)
  19.         if (sum_row(x, n, i) % 2 == 0)
  20.             return 0;
  21.     return 1;
  22. }
  23.  
  24. int main()
  25. {
  26.     srand(time(NULL));
  27.     int **x, n, i, j, k, sum_main = 0, sum_side = 0;
  28.    
  29.     printf("Size (n*n) = ");
  30.     scanf("%d", &n);
  31.  
  32.     x = (int **)malloc(n*sizeof(int *));
  33.     for (i = 0; i < n; i++)
  34.         x[i] = (int*)malloc((n + 1)*sizeof(int));
  35.  
  36.     for (i = 0; i < n; i++)
  37.     {
  38.         for (j = 0; j < n; j++)
  39.         {
  40.             x[i][j] = RAND(0, 10);
  41.             printf("%d ", x[i][j]);
  42.         }
  43.         printf("= %d", sum_row(x, n, i));
  44.         printf("\n");
  45.     }
  46.  
  47.     if (check(x, n) == 1)
  48.     {
  49.         printf("All lines have odd sums\n");
  50.         return 0;
  51.     }
  52.  
  53.     for (i = 0; i < n; i++)
  54.     {
  55.         for (j = 0; j < n; j++)
  56.         {
  57.             if (i == j)
  58.                 sum_main += x[i][j];
  59.             if (i + j == n - 1)
  60.                 sum_side += x[i][j];
  61.         }
  62.     }
  63.  
  64.     k = 0;
  65.     for (i = 0; i < n; i++)
  66.     {
  67.         if (sum_row(x, n, i) % 2 == 0)
  68.         {
  69.             for (j = 0; j < n; j++)
  70.                 x[k][j] = x[i][j];
  71.             k++;
  72.         }
  73.     }
  74.     x = (int **)realloc(x, k*sizeof(int *));
  75.  
  76.     for (i = 0; i < k; i++)
  77.     {
  78.         if (i % 2 == 0)
  79.             x[i][n] = sum_main;
  80.         else
  81.             x[i][n] = sum_side;
  82.     }
  83.  
  84.     for (i = 0; i < k; i++)
  85.     {
  86.         printf("\n");
  87.         for (j = 0; j <= n; j++)
  88.             printf("%d ", x[i][j]);
  89.     }
  90.  
  91.     free(x);
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement