Здравствуйте, помогите с заданием/ (С++)
Написать программу,меняющую местами в произвольной квадратной матрице столбец, содержащий минимальный элемент и строку,содержащую максимальный элемент матрицы. Написать функции:
-заполнения двумерного массива случайными числами из диапазона [-200;+200] ;
-вывода двумерного массива;
-поиска индексов минимального и максимального элемента матрицы;
-обмена значениями элементов произвольного столбца и произвольной строки квадратной матрицы.
Answers & Comments
#include "iostream"
#include "stdlib.h"
#include "locale.h"
#include "time.h"
using namespace std;
void create(int** arr, int n);
void show(int** arr, int n);
void max_quarter(int** arr, int n);
void find_min_max(int** arr, int n, int &pos_max_row, int &pos_min_col);
void change_row_column(int** arr, int n, int &pos_max_row, int &pos_min_col);
int main()
{
srand(time(NULL));
setlocale(LC_ALL, "russian");
bool flag = false;
int pos_max_row = 0, pos_min_col = 0;
int n=0;
int answer = 100;
int **A = 0;
A = (int**)malloc(n*sizeof(int));
if(!A)
{
int** A = (int**)malloc(n*sizeof(int));
}
while (answer != 0)
{
system("cls");
cout << "Меню\n";
cout << "1) Сформировать массив из случайных чисел размером n.\n";
cout << "2) Вывести массив на экран сформированный массив.\n";
cout << "3) Найти максимальный элемент в верхней и нижней четвертях матрицы\n";
cout << "4) Обмен значениями произвольной строки с произвольным столбцом\n";
cout << "0) Выход\n";
cout << "Ваш выбор: ";
while (!(cin >> answer)) { //делаем проверку на ввод букв символов итд
cout << "Вы ввели символ или букву. Требуется вводить только цифры\nВвод: ";
cin.clear();
fflush(stdin);
}
system("cls");
switch (answer)
{
case 1:
{
cout << "Какого размера будет квадратичная матрица (x*x)?: ";
while (!(cin >> n))
{ //делаем проверку на ввод букв символов итд
cout << "Вы ввели символ или букву. Требуется вводить только цифры\nВвод: ";
cin.clear();
fflush(stdin);
}
create(A, n);
cout << "Массив из случайных чисел сформирован!"<<endl;;
system("pause");
break;
}
case 2:
{
if(n != 0){
cout << "Вывод массива на экран.\n";
show(A, n);
}else cout << "Посетите пункт 1" << endl;
system("pause");
break;
}
case 3:
{
if(n != 0){
flag = true;
cout << "Нахождение максимального значения элемента в матрице.\n";
find_min_max(A,n, pos_max_row, pos_min_col);
}else cout << "Посетите пункт 1" << endl;
system("pause");
break;
}
case 4:
{
if(flag == true)
{
cout << "Обмен значениями произвольной строки с произвольным столбцом.\n";
change_row_column(A,n, pos_max_row, pos_min_col);
}else cout << "Посетите пункт 3" << endl;
system("pause");
break;
}
system("pause");
return 0;
}
}
}
void create(int **arr, int n)
{
for(int i=0; i<n; i++)
{
arr[i]=(int*)malloc(n*sizeof(int));
if(!arr[i])
{
arr[i]=(int*)malloc(n*sizeof(int));
}
for(int j=0; j<n; j++)
{
arr[i][j]= -200 + rand()%401;
}
}
}
void show(int **arr, int n)
{
for (int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
printf("%7d", arr[i][j]);
}
printf("\n");
}
}
void find_min_max(int** arr, int n, int &pos_max_row, int &pos_min_col){
int min = arr[0][0];
int max = arr[0][0];
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(arr[i][j] > max)
{
max = arr[i][j];
pos_max_row = i;
}
if(arr[i][j] < min)
{
min = arr[i][j];
pos_min_col = j;
}
}
}
cout << "Минимальное значение массива: " << min << endl;
cout << "Максимальное значение массива: " << max << endl;
}
void change_row_column(int** arr,int n, int &pos_max_row, int &pos_min_col){
cout << "Массив до преобразования. " << endl;
show(arr,n);
cout << "Изменяемая cтрока: " << pos_max_row <<"\nИзменяемый столбец: " << pos_min_col << endl;
for(int i = 0; i < n; i++){
int temp = arr[i][pos_min_col];
arr[i][pos_min_col] = arr[pos_max_row][i];
arr[pos_max_row][i] = temp;
}
cout << "Массив после преобразования. " << endl;
show(arr,n);
}