C/C++

Чёт не пойму, как сделать рандомные значения матрицы через массив, прошу доработать, пж прогу!

Ввести с клавиатуры или с использованием генератора случайных чисел матрицу F(n,m), n и m >=5. Поменять местами ее минимальный элемент с последним. Определение минимума оформить как функцию пользователя. В окне результатов показать исходную и результирующую матрицы.
#include <iostream>

using namespace std;
const int m = 7;
const int n = 6;
//функция поиска минимального элемента матрицы
int min(int A[m][n]) {
int minimum = A[0][0];
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if (A[i][j] < minimum)
minimum = A[i][j];
}
}
return minimum;
}
void main()
{
setlocale(LC_ALL, "Russian");
//Объявление матрицы и ее заполнение рандомными числами
int A[m][n] = {};
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
A[i][j] = rand() % 100;
}
}
//Вывод исходной
int minimum = min(A);
cout << "Исходная матрица\n";
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout << A[i][j] << "\t";
}
cout << "\n";
}
cout << "\n";
//Вывод минимального элемента
cout << "Минимальный элемент: " << minimum << "\n\n";
//Постоение новой матрицы с заменой элемента
cout << "Новая матрица\n";
A[m - 1][n - 1] = minimum;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout << A[i][j] << "\t";
}
cout << "\n";
}
cout << "\n";
system("pause");
}
У тебя, вроде бы, всё верно. Но при каждом выполнении программы будут одинаковые значения. Чтобы этого не было, используют функцию srand() в параметре которой лежит функция time(), которая генерирует якобы случайное число.

Добавь заголовок
#include <ctime>

в начале функции main()
добавь стоку
srand(time(nullptr));
И тогда значения будут при каждом вызове программы разные.
А, ещё тебе нужно было поменять последний элемент с минимумом, а не просто присвоить последнему минимум.
Выкладываю свой код. Так проще понять.
#include <iostream>
#include <ctime>

using namespace std;
const int m = 7;
const int n = 6;
//функция поиска минимального элемента матрицы
int min(int A[m][n], int & i_min, int & j_min) {
int minimum = A[0][0];
i_min = j_min = 0;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if (A[i][j] < minimum)
{
minimum = A[i][j];
i_min = i;
j_min = j;
}
}
}
return minimum;
}
int main()
{
srand(time(nullptr));
int tmp; // для того, чтобы обменяться значениями
int i_min,j_min; // координаты минимального значения
setlocale(LC_ALL, "Russian");
//Объявление матрицы и ее заполнение рандомными числами
int A[m][n] = { } ;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
A[i][j] = rand() % 100;
}
}
//Вывод исходной
int minimum = min(A,i_min,j_min);
cout << "Исходная матрица\n";
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout << A[i][j] << "\t";
}
cout << "\n";
}
cout << "\n";
//Вывод минимального элемента
cout << "Минимальный элемент: " << minimum << "\n\n";
//Постоение новой матрицы с заменой элемента
cout << "Новая матрица\n";
//A[m - 1][n - 1] = minimum;
tmp = A[m-1][n-1];
A[m-1][n-1] = minimum;
A[i_min][j_min] = tmp;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout << A[i][j] << "\t";
}
cout << "\n";
}
cout << "\n";
system("pause");
}
АД
Адылбек Джансеитов
55 971
Лучший ответ
Тарасов Роман спасибо большое за ваш труд