Добавил:
nkonstantin87
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:matrix_pr
.txtv#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;
}
Соседние файлы в предмете Объектно ориентированное программирование