Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТиУвТС / ОАиП контрольная. 6 вариант.docx
Скачиваний:
15
Добавлен:
01.04.2014
Размер:
130.96 Кб
Скачать

Задание №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;

}

}

}

}

При вводе значений элементов массивов должен получиться следующий результат:

16