Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <time.h>
- #define RAND(a,b) (a + rand() % (b - a))
- int sum_row(int **x, int n, int i)
- {
- int j, sum = 0;
- for (j = 0; j < n; j++)
- sum += x[i][j];
- return sum;
- }
- int check(int **x, int n)
- {
- int i;
- for (i = 0; i < n; i++)
- if (sum_row(x, n, i) % 2 == 0)
- return 0;
- return 1;
- }
- int main()
- {
- srand(time(NULL));
- int **x, n, i, j, k, sum_main = 0, sum_side = 0;
- printf("Size (n*n) = ");
- scanf("%d", &n);
- x = (int **)malloc(n*sizeof(int *));
- for (i = 0; i < n; i++)
- x[i] = (int*)malloc((n + 1)*sizeof(int));
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- x[i][j] = RAND(0, 10);
- printf("%d ", x[i][j]);
- }
- printf("= %d", sum_row(x, n, i));
- printf("\n");
- }
- if (check(x, n) == 1)
- {
- printf("All lines have odd sums\n");
- return 0;
- }
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- if (i == j)
- sum_main += x[i][j];
- if (i + j == n - 1)
- sum_side += x[i][j];
- }
- }
- k = 0;
- for (i = 0; i < n; i++)
- {
- if (sum_row(x, n, i) % 2 == 0)
- {
- for (j = 0; j < n; j++)
- x[k][j] = x[i][j];
- k++;
- }
- }
- x = (int **)realloc(x, k*sizeof(int *));
- for (i = 0; i < k; i++)
- {
- if (i % 2 == 0)
- x[i][n] = sum_main;
- else
- x[i][n] = sum_side;
- }
- for (i = 0; i < k; i++)
- {
- printf("\n");
- for (j = 0; j <= n; j++)
- printf("%d ", x[i][j]);
- }
- free(x);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement