
Другие языки программирования и технологии
Программирование с++ побочная диагональ матрицы
Заполнить матрицу случайными числами. На побочной диагонали разместить суммы элементов, которые лежат на той же строке и столбце. Но этот код для главной диагонали. Как перевести на побочную диагональ?


#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();
}
#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();
}
главная диагональ начинается с а [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;
}
for(int i = 0; i<5; ++i)
{
a[i][i] = sum;
}
Побочная диагональ:
for(int i = 0; i<5; ++i)
{
a[i][5-i] = sum;
}
Похожие вопросы
- «Двумерные массивы» Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие на побочной диагонали и ниже
- Найти сумму элементов квадратной матрицы ниже главной и побочной диагонали.. Банктик получается. C++ ,Pascal
- ПОМОГИТЕ ОЧЕНЬ НУЖНА ПОМОЩ Поменять местами элементы, расположенные симметрично относительно побочной диагонали
- В квадратном рандомном массиве посчитать сумму элементов главной диагонали и произведение элементов побочной диагонали.
- Помогите с программирование с++. является ли матрица магическим квадратом
- С++ Передать в функцию квадратную матрицу и вычислить сумму элементов на ее главной диагонали и вернуть эту сумму.
- Если в заданной матрице A(N, N) есть хотя бы один элемент, боль-ший ста, то элементы обеих диагоналей замените нулям
- Программирование. Матрицы. Pascal.
- Матрица в языке программирования Pascal.
- Конец объектно-ориентированному программированию? Переходим от “черных” ящиков к ”белым” и ”прозрачным” ящикам?