Другие языки программирования и технологии

c++ двумерные масивы

В квадратном массиве выделим четыре четверти, ограниченные
главной и побочной диагоналями (без учета элементов, расположенных
на диагоналях): верхнюю, нижнюю, левую и правую. Найти сумму
элементов:
а) верхней четверти;
б) правой четверти;
в) нижней четверти;
г) левой четверти.
Victor Mistergaze
Victor Mistergaze
91
int data[5][5]; // Заполнение самостоятельно

int mask[5][5]={{0,1,1,1,0},{2,0,1,0,3},{2,2,0,3,3},{2,0,4,0,3},{0,4,4,4,0}};
int cnt[5]={0};
for(int i=0;i<5;i++)for(int j=0;j<5;j++)cnt[mask[i][j]]+=data[i][j];

Примерно так :)
Динар Ядигаров
Динар Ядигаров
83 405
Лучший ответ
#include <iostream>
#include <random>
using namespace std;
int main() {
const auto n = 6U;
int matrix[n][n];
const uniform_int_distribution<> uid(1, 9);
random_device rd;
mt19937 gen(rd());
for (auto& row : matrix) for (auto& value : row) value = uid(gen);
for (auto& row : matrix) {
for (auto value : row) cout << ' ' << value;
cout.put('\n');
}
auto top = 0LL;
auto bottom = 0LL;
auto left = 0LL;
auto right = 0LL;
const auto l = n - 1U;
const auto r = n / 2U;
for (auto i = 0U; i < n; ++i) {
for (auto j = 0U; j < n; ++j) {
auto x = i + j;
if (i == j || x == l) continue;
if (i < j && x < l) top += matrix[i][j];
else if (i > j && x > l) bottom += matrix[i][j];
else if (j < r) left += matrix[i][j];
else right += matrix[i][j];
}
}
cout
<< "Sum top: " << top << '\n'
<< "Sum bottom: " << bottom << '\n'
<< "Sum left: " << left << '\n'
<< "Sum right: " << right << endl;
system("pause");
}