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

Программирование с++ побочная диагональ матрицы

Заполнить матрицу случайными числами. На побочной диагонали разместить суммы элементов, которые лежат на той же строке и столбце. Но этот код для главной диагонали. Как перевести на побочную диагональ?
#include <iostream>
#include <random>
#include <iomanip>
using namespace std;
void fill_rand_int(int* v, const size_t n, int l, int r) {
if (r < l) swap(l, r);
uniform_int_distribution<> uid(l, r);
random_device rd;
mt19937 gen(rd());
for (auto i = 0U; i < n; ++i) v[i] = uid(gen);
}
void show(int* v, const size_t n, const streamsize w) {
for (auto i = 0U; i < n; ++i) cout << setw(w) << v[i];
cout.put('\n');
}
int sum(int* v, const size_t n) {
auto s = 0;
for (auto i = 0U; i < n; ++i) s += v[i];
return s;
}
int main() {
const auto rank = 4U;
const auto left = 1;
const auto right = 5;
const auto width = 4U;
int matrix[rank][rank];
for (auto& row : matrix) fill_rand_int(row, rank, left, right);
for (auto& row : matrix) show(row, rank, width);
cout.put('\n');
for (auto i = 0U; i < rank; ++i) matrix[i][rank - i - 1]] = sum(matrix[i], rank);
for (auto& row : matrix) show(row, rank, width);
cout.put('\n');
cin.get();
}
Есбол Нажетханов
Есбол Нажетханов
79 138
Лучший ответ
главная диагональ начинается с а [1,1] а побочная с а [1,5]
Главная диагональ:
for(int i = 0; i<5; ++i)
{
a[i][i] = sum;
}

Побочная диагональ:
for(int i = 0; i<5; ++i)
{
a[i][5-i] = sum;
}
...
...
15 408

Похожие вопросы