Разработать типизированную функцию для выполнения над матрицей
размером mхm операции в соответствии с вариантом. На печать вывести
исходную матрицу и полученный результат с текстовым комментарием.
Примечание: Исходную матрицу сформировать, используя функцию
Form_matrix c датчиком псевдослучайных чисел rand().
Определение минимального значения среди положительных элементов
матрицы.
C/C++
Программирование на С++
#include <iostream>
#include <ctime>
using namespace std;
const int n = 4, m = 5;
void Form_matrix(int A[n][m])
{
srand(time(nullptr));
rand();
for(int x = 0; x < n; x++)
for(int y = 0; y < m; y++)
A[x][y] = rand() % 11 - 5;
}
void Print_matrix(const int A[n][m])
{
for(int x = 0; x < n; x++)
{
for(int y = 0; y < m; y++)
cout << A[x][y] << '\t';
cout << endl;
}
cout << endl;
}
int main()
{
int A[n][m];
Form_matrix(A);
Print_matrix(A);
int min = 0;
for(int x = 0; x < n; x++)
for(int y = 0; y < m; y++)
if(A[x][y] > 0)
{
if(min == 0) min = A[x][y];
else if(A[x][y] < min) min = A[x][y];
}
if(min)
{
cout << "Минимальное положительное значение равно " << min << '.' << endl;
}
else
{
cout << "В матрице нет положительных элементов." << endl;
}
return 0;
}
#include <ctime>
using namespace std;
const int n = 4, m = 5;
void Form_matrix(int A[n][m])
{
srand(time(nullptr));
rand();
for(int x = 0; x < n; x++)
for(int y = 0; y < m; y++)
A[x][y] = rand() % 11 - 5;
}
void Print_matrix(const int A[n][m])
{
for(int x = 0; x < n; x++)
{
for(int y = 0; y < m; y++)
cout << A[x][y] << '\t';
cout << endl;
}
cout << endl;
}
int main()
{
int A[n][m];
Form_matrix(A);
Print_matrix(A);
int min = 0;
for(int x = 0; x < n; x++)
for(int y = 0; y < m; y++)
if(A[x][y] > 0)
{
if(min == 0) min = A[x][y];
else if(A[x][y] < min) min = A[x][y];
}
if(min)
{
cout << "Минимальное положительное значение равно " << min << '.' << endl;
}
else
{
cout << "В матрице нет положительных элементов." << endl;
}
return 0;
}
Функцию Form_matrix можно сделать многофункциональной: она может и формировать матрицу, и аккуратно выводить её на печать, а также возвращать ненулевое значение, если в ней будут положительные элементы, и нуль, если положительных элементов в матрице не окажется, что сильно поможет работать с ней в основной функции main. Это ведь не запрещено в задании, не так ли? А раз так, то лучше так и сделать! Размер матрицы задаётся с экрана вводом значения переменной m, а сама она представляет из себя двумерный динамический массив. У меня элементы выбираются из диапазона [-99;99] и являются целыми числами типа int. Если матрица предполагалась бы не целочисленной и с элементами лежащими в каком-нибудь другом диапазоне, то об этом надо было сразу и написать. Если требуется все действия проделать только один раз, то обёртку в бесконечный цикл while (true) надо убрать, хотя в противном случае лучше, конечно же, оставить.
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
int Form_matrix(int **A, int m)
{
int j = 0, k, l;
for (k = 0; k < m; k++)
{
for (l = 0; l < m; l++)
{
A[k][l] = rand() % 199 - 99;
cout << setw(4) << A[k][l];
if (A[k][l] > 0) j = A[k][l];
}
cout << endl;
}
return j;
}
int main()
{
int j, k, l, m, min;
srand(time(nullptr));
while (true)
{
cout << "m: ";
cin >> m;
int **a = new int *[m];
for (k = 0; k < m; k++) a[k] = new int [m];
j = Form_matrix(a, m);
min = j;
if (j)
{
for (k = 0; k < m; k++) for (l = 0; l < m; l++)
if (a[k][l] > 0 && a[k][l] < min) min = a[k][l];
cout << "min = " << min << endl;
}
else cout << "no positive elements" << endl;
for (k = 0; k < m; k++) delete [] a[k];
}
}

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
int Form_matrix(int **A, int m)
{
int j = 0, k, l;
for (k = 0; k < m; k++)
{
for (l = 0; l < m; l++)
{
A[k][l] = rand() % 199 - 99;
cout << setw(4) << A[k][l];
if (A[k][l] > 0) j = A[k][l];
}
cout << endl;
}
return j;
}
int main()
{
int j, k, l, m, min;
srand(time(nullptr));
while (true)
{
cout << "m: ";
cin >> m;
int **a = new int *[m];
for (k = 0; k < m; k++) a[k] = new int [m];
j = Form_matrix(a, m);
min = j;
if (j)
{
for (k = 0; k < m; k++) for (l = 0; l < m; l++)
if (a[k][l] > 0 && a[k][l] < min) min = a[k][l];
cout << "min = " << min << endl;
}
else cout << "no positive elements" << endl;
for (k = 0; k < m; k++) delete [] a[k];
}
}

Похожие вопросы
- Программирование на С++
- Программирование на C++
- Как начать изучать программирование?
- Доброго дня! Хочу сменить сферу деятельности . Заинтересовал вариант программирования .
- Программирование на C++
- Книги по программированию.
- Может ли новичок в программирование начать с c++/Gamedev
- Чем отличаются языки программирования ???
- На каком языке программирования (Assembler / С / С++) лучше будет написать компилятор для своего языка программирования?
- Указатели. Программирование с использованием динамических двухмерным масивов.