
Задание №5. Обработка двухмерных динамических массивов. Функции пользователя
В целочисленном двухмерном динамическом массиве (матрице) размером NМ найти минимальный элемент и поменять его с последним элементом. Ввод исходных данных (размеры массива и его элементы) и вывод результатов выполнить в основной функции. Решение поставленной задачи оформить в функции пользователя.
Текст программы может иметь следующий вид:
#include "conio.h"
#include "iostream"
#include "math.h"
using namespace std;
void find_min(int &,int &,int,int,int **); //это прототип подпрограммы, в нем указывается что она возвращает, как она называется, и какие типы данных она принимает
void main()
{
int **mas,i,j,n,m,x,y,buf; //объявляем переменные типа int, mas - двухмерный массив, I,j – счётчики, n,m - размер массива, x,y - координаты в массиве наименьшего элемента, buf - буфер обмена.
cout << "Enter n,m :\n";
cin >> n >> m;
mas = new int *[n]; //создаём массив указателей (отводим для него память)
for (i = 0;i < n;i++) //в цикле создаем массив для каждого указателя в массиве указателей
mas[i] = new int[m];
cout <<"\nEnter massive\n";
for (i = 0;i < n;i++) //в этом цикле вводим элементы массива
for (j = 0;j < m;j++)
{
cout << "a["<< i+1 << "][" << j+1 << "]=";
cin >> mas[i][j];
}
cout << "\n Matrix:\n";
for (i = 0;i < n;i++) //здесь выводим массив в виде матрицы
{
for (j = 0;j < m;j++)
cout << "\t" << mas[i][j];
cout << endl;
}
find_min(x,y,n,m,mas); //вызываем нашу функцию. Она найдёт наименьший элемент массива.Его координаты будут храниться в х,у.
buf = mas [x][y]; //меняем местами искомое и последнее значение при помощи переменной buf
mas [x][y] = mas [n-1][m-1];
mas [n-1][m-1] = buf;
cout <<"---------------------------------------------\n";
for (i = 0;i < n;i++) //выводим на экран преобразованный массив
{
for (j = 0;j < m;j++)
cout << "\t" << mas[i][j];
cout << endl;
}
getch();
}
void find_min(int &a,int &b,int n,int m,int **mas)
{
int min = mas[0][0]; //присваиваем min значение первого элемента массива
for (int i = 0;i < n;i++) //в цикле проходим все значения массива, если какое-то меньше текущего - заменяем min и записываем его координаты. Т.е. в итоге получим координаты наименьшего элемента
{
for (int j = 0;j < m;j++)
{
if (mas[i][j] < min)
{
min = mas [i][j];
a = i;
b = j;
}
}
}
}
При вводе значений элементов массивов должен получиться следующий результат: