Задача
В квадратной таблице [latex] n × n [/latex] подсчитать сумы чисел, стоящих на главной и побочной диагоналях.
Входные данные
Вводится число [latex]n (1 \le n \le 500)[/latex], а затем матрица [latex] n × n [/latex]. Элементы матрицы — числа по модулю не больше [latex]10^5[/latex].
Для того, чтобы понять, как какая диагональ называется, внимательно присмотритесь ко второму примеру.
Выходные данные
Вывести сумму чисел сначала на главной, а затем на побочной диагонали.
Тесты
Вход | Выход |
4 134 475 30 424 303 151 419 235 248 166 90 42 318 237 184 36 |
411 1327 |
7 -59 21 7 5 12 868 -565 32 19 52 3 7 11 0 3 -123 -52 -99 -857 -4621 -561 11 232 86 652 46 3244 572 857 -1242 -6767 923 -575 12 1 552 232 2 63 -76 23 0 12 34 87 20 -7 767 959 |
967 -7282 |
3 1 45 82 96 29 90 757 23 12 |
42 868 |
2 12 32 99 71 |
83 131 |
5 12 32 54 76 12 95 23 21 123 0 65 32 1 773 992 5 32 155 866 912 134 44 74 11 23 |
36 136 |
Код программы
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 |
#include <iostream> using namespace std; int main() { int n; int m=0; int c=0; cin >> n; int ** x = new int * [n]; for (int i = 0; i < n; i++) x[i] = new int[n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) cin >> x[i][j]; } for (int i = 0; i < n; i++){ m+=x[i][i]; c+=x[i][n-1-i]; } for (int i = 0; i < n; i++) delete []x[i]; delete []x; cout << m << " " << c; return 0; } |
Решение
Создаем динамический массив.
Чтобы найти сумму главной диагонали берём, лишь те элементы массива, в которых номер строки и столбца равны.
Чтобы просуммировать побочную диагональ, используем цикл в котором используем элементы массива начиная с первого столбца и последней строки и движемся к противоположному (первая строка, последний столбец).
Ссылки