C/C++

С++. Динамические матрицы.

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
unsigned n;
do
{
cout << "Введите n (число, большее нуля): ";
cin >> n;
} while (n == 0);
int **a = new int*[n]; // выделение памяти
for(unsigned x=0; x<n; x++) a[x] = new int[n];

// генерация матрицы
for (int x = 0; x < n; x++)
{
for (int y = 0; y < n; y++)
{
do
{
a[x][y] = rand();
} while (a[x][y] > 5 || a[x][y] < -5 || a[x][y] == 0);
cout << a[x][y] << '\t';
}
cout << endl;
}

int p; // для произведения.
p = 1;
cout << "p = 1";
unsigned n2 = n/2;
for(unsigned x = 0; x < n; x++)
{
for (unsigned y = 0; y < n; y++)
{
if (x < n2)
{
if (y >= x && y <= n - 1 - x)
{
p *= a[x][y];
cout << '*' << a[x][y];
}
}
else if (x == n2)
{
if (n % 2 == 0)
{
if (y >= n2 - 1 && y <= n2)
{
p *= a[x][y];
cout << '*' << a[x][y];
}
}
else
{
if (y == n2)
{
p *= a[x][y];
cout << '*' << a[x][y];
}
}
}
else
{
if (y >= n - 1 - x && y <= x)
{
p *= a[x][y];
cout << '*' << a[x][y];
}
}
}
}
cout << " = " << p << endl;

for(unsigned x = 0; x<n; x++) delete a[x];
delete []a; // высвобождение памяти

return 0;
}
Сергей Ковалев
Сергей Ковалев
89 628
Лучший ответ