C/C++

Задача на С++

Дана целочисленная матрица А размерности nxn. Выделите для нее необходимый объем динамической памяти и найдите значение min*max, где min – минимальный элемент матрицы, а max – максимальный.

Освободите динамическую память. Значения матрицы должны вводиться с помощью генератора псевдослучайных чисел из диапазона [1;9]
#include <iostream>

int main()
{
// Создание указателя на 2-мерный массив
int** A;
int n;
std::cin >> n;
// Ниже идет создание массива указателей
A = new int*[n];
for(int i = 0; i < n; i++)
{
// создание массивов строк
A[i] = new int[n];
for(int j = 0; j < n; j++)
{
A[i][j] = 1 + rand()%8;
}
}

for(int i = 0; i < n; i++)
{
std::cout << "\n";
for(int j = 0; j < n; j++)
{
std::cout <<A[i][j] <<" ";
}
}
std::cout << "\n";

// далее освобождение памяти
for(int i = 0; i < n; i++)
{
delete [] A[i];
}
delete [] A; // память освобождена
std::cin >> n; // для задержки экрана
return 0;
}
ВП
Вячеслав Побегайло
175
Лучший ответ
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std; int main()
{ int a, i, j, n, min, max; cout << "n: "; cin >> n;
int **A = new int *[n]; for (i = 0; i < n; i++)
A[i] = new int[n]; srand(time(nullptr));
for (i = 0; i < n; i++) { for (j = 0; j < n; j++)
{ A[i][j] = rand() % 9 + 1; cout << A[i][j] << ' '; }
cout << endl; } min = max = A[0][0];
for (i = 0; i < n; i++) for (j = 0; j < n; j++)
{ a = A[i][j]; if (a > max) max = a;
if (a < min) min = a; } cout << "min=" << min
<< ", max=" << max << "\nmin•max=" <<
min * max << endl; for (i = 0; i < n; i++)
delete [] A[i]; delete [] A; cin.get(); cin.get(); }
Женя Дубинец
Женя Дубинец
66 572
#include <iostream>
#include <random>
#include <cmath>
using namespace std;

void main()
{
setlocale(LC_ALL, "ru");
int n;
cout << "Размерность квадратной матрицы: "; cin >> n;
int** A = new int* [n];
for (int i = 0; i < n; i++)
A[i] = new int[n];
int minElem = 10, maxElem = 0;

for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
A[i][j] = rand() % 9 + 1;
minElem = min(minElem, A[i][j]);
maxElem = max(maxElem, A[i][j]);
}
cout << "min*max = " << minElem * maxElem << endl;

for (int i = 0; i < n; i++)
delete[]A[i];
delete[]A;
}