унылая программка, ищущая максимум среди сумм элементов диагоналей параллельных главной

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>
#define N 10
// C++ съел мой моск, жить не могу без bool, а в том компиляторе что ты
// используешь я не знаю есть ли bool или нету
typedef int bool;
#define TRUE 1
#define FALSE 0
inline void generate(int array[N][N])
{
int i, j;
for (i = 0; i < N; ++i)
for (j = 0; j < N; ++j)
array[i][j] = i;
}
inline void print(int array[N][N])
{
int i, j;
for (i = 0; i < N; ++i) {
for (j = 0; j < N; ++j)
printf("%d ", array[i][j]);
printf("\n");
}
}
int diagonal_sum(int x, bool horiz, int array[N][N])
{
int i, j, sum = 0;
if (horiz) {
i = 0; j = x;
} else {
i = x; j = 0;
}
for (; i < N && j < N; ++i, ++j)
sum += array[i][j];
return sum;
}
int main()
{
int array[N][N];
generate(array);
print(array);
int i, sum, maxs = 0; bool horiz;
for (horiz = FALSE; horiz <= TRUE; ++horiz)
for (i = 1; i < N; ++i) {
sum = diagonal_sum(i, horiz, array);
if (sum > maxs)
maxs = sum;
}
printf("maximum sum is %d\n", maxs);
return 0;
}