Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

matrix_pr

.txt
Скачиваний:
0
Добавлен:
08.04.2023
Размер:
4.31 Кб
Скачать
v#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <ctime>
using namespace std;

int main()
{
	setlocale(LC_ALL, "ru");
	cout << " Практическая работа <<Обработка массивов>>" << endl << " Ввод размерности матрицы B (nxm):" << endl;;
	int i, j, n, m, max, min, imax, imin, temp;
	char m_z;
	srand(time(NULL));
	do   //выбор количества строк массива с проверкой по допустимому диапазону
	{
		cin.clear();
		cin.seekg(0);
		cout << " Введите количество строк массива (от 3 до 30):    ";
		cin >> n;
	} while ((n < 3) || (n > 30) || (!cin.good()));
	do   //выбор количества столбцов массива с проверкой допустимому диапазону
	{
		cin.clear();
		cin.seekg(0);
		cout << " Введите количество столбцов массива (от 1 до 30): ";
		cin >> m;
	} while ((m < 1) || (m > 30) || (!cin.good()));
	int **B = new int*[n];   //создание динамического массива B[n][m]
	for (int j = 0; j < n; j++)
		B[j] = new int[m];
	do   //выбор метода заполнения массива
	{
		cout << " Выберите метод заполнения массива: 1 - Случайный, 2 - Вручную: " << endl;
		m_z = _getch();
	} while ((m_z != '1') && (m_z != '2'));
	switch (m_z)  //методы заполнения массива
	{
	case'1':
	{
		cout << " 'Случайное' заполнение массива:" << endl;   //автоматическое заполнение массива
		for (i = 0; i < n; i++)
		{
			for (j = 0; j < m; j++)
			{
				B[i][j] = rand() % 256;
			}
		}
		break;
	}
	case'2':
	{
		cout << " Заполнение массива в ручную. Введите целые числа [0, 255]:" << endl;   //ручное заполнение массива
		for (i = 0; i < n; i++)
		{
			for (j = 0; j < m; j++)
			{
				do
				{
					cin.clear();
					cin.seekg(0);
					cout << "B[" << i + 1 << "][" << j + 1 << "]";
					cin >> B[i][j];
				} while ((B[i][j] < 0) || (B[i][j] > 255) || (!cin.good()));
			}
		}
		break;
	}
	}
	cout << " Исходная матрица:" << endl;   //вывод в консоль исходной матрицы
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
		{
			cout << B[i][j] << "\t";
		}
		cout << endl;
	}
	max = B[0][0];
	min = B[0][0];
	imax = 0;
	imin = 0;
	for (int i = 0; i < n; i++)  //поиск максимального элемента массива максимальный элемент
	{
		for (int j = 0; j < m; j++)
			if (B[i][j] > max)
			{
				max = B[i][j];
				imax = i;   //номер строки массива с максимальным элементом
			}
	}
	for (int i = 0; i < n; i++)   //поиск минимального элемента массива
	{
		for (int j = 0; j < m; j++)
			if (B[i][j] < min)
			{
				min = B[i][j];
				imin = i;   //номер строки массива с минимальным элементом
			}
	}
	cout << " Cтрока с максимальным элементом: " << imax + 1 << endl << " Строка с минимальным элементом:  " << imin + 1 << endl;
	if (imax == imin)   //замена строк массива не требуется
	{
		cout << " Замена строк не требуется:" << endl;
		for (i = 0; i < n; i++)
		{
			for (j = 0; j < m; j++)
			{
				cout << B[i][j] << "\t";
			}
			cout << endl;
		}
	}
	else
	{
		for (j = 0; j < m; j++)   //замена строк в исходном массиве
		{
			temp = B[imax][j];
			B[imax][j] = B[imin][j];
			B[imin][j] = temp;
		}
		cout << " Матрица с заменой строк:" << endl;   //вывод в консоль изменённого массива
		for (i = 0; i < n; i++)
		{
			for (j = 0; j < m; j++)
			{
				cout << B[i][j] << "\t";
			}
			cout << endl;
		}
	}
	cout << " Для выхода нажмите любую клавишу" << endl;
	system("pause>nul");
	return 0;
}
Соседние файлы в предмете Объектно ориентированное программирование