Заполнение двумерного массива n*n C++
Необходимо создать двумерный массив размерностью n*n, и заполнить его значениями.Дан пример того, как этот массив будет выглядеть.
Код прилагаю ниже, пока массив заполняется нулями:
#include "iostream"
using namespace std;
int main()
{
setlocale(LC_ALL, "Rus");
int n, sum = 0;
cout << "Введите размерность квадратной матрицы: "; cin >> n;
int** M = new int* [n];
for (int i = 0; i < n; i++)
M[i] = new int[n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
M[i][j] = 0;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << M[i][j] << " ";
if (M[i][j] % 2 == 0)
sum += M[i][j];
}
cout << endl;
}
cout << "Сумма четных элементов равна: " << sum;
for (int i = 0; i < n; i++)
delete[] M[i];
delete[] M;
}
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
Ну воспользуйтесь симметрией...
for(int row = 0; row < n; ++row)
for(int col = row; col < n; ++col)
M[col][row] = M[row][col] = col - row + 1;
вот и все заполнение.
Автор решения: Проста Miha
→ Ссылка
Вот что мне пришло в голову, надеюсь вам это поможет
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n, sum = 0;
cout << "Введите размерность квадратной матрицы: ";
cin >> n;
int M[n][n];
for (int i = 1; i <= n ; i++) {
for (int j = 1; j <= n; j++) {
int val = abs(j - i) + 1;
M[i][j] = val;
if (val % 2 == 0) sum+= val;
}
}
for (int i = 1; i <= n ; i++) {
for (int j = 1; j <= n; j++) {
cout << M[i][j] << ' ';
}
cout << endl;
}
cout << "Сумма : " << sum;
return 0;
}
