
Здравствуйте, помогите с заданием/ (С++) Написать программу,меняющую местами в произвольной
квадратной матрице столбец, содержащий минимальный элемент и строку,содержащую максимальный элемент матрицы. Написать функции: -заполнения двумерного массива случайными числами из диапазона [-200;+200] ; -вывода двумерного массива; -поиска индексов минимального и максимального элемента матрицы; -обмена значениями элементов произвольного столбца и произвольной строки квадратной матрицы.

Ответы на вопрос

#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);
}



Здравствуйте! Я помогу вам написать программу на C++, которая решает вашу задачу. Вот полный код программы:
cpp#include <iostream>
#include <iomanip>
#include <ctime>
const int SIZE = 5; // Размер квадратной матрицы (можно изменить)
// Функция для заполнения двумерного массива случайными числами из диапазона [-200;+200]
void fillMatrix(int matrix[][SIZE]) {
srand(static_cast<unsigned>(time(0)));
for (int i = 0; i < SIZE; ++i) {
for (int j = 0; j < SIZE; ++j) {
matrix[i][j] = rand() % 401 - 200; // Генерируем числа от -200 до +200
}
}
}
// Функция для вывода двумерного массива
void printMatrix(int matrix[][SIZE]) {
for (int i = 0; i < SIZE; ++i) {
for (int j = 0; j < SIZE; ++j) {
std::cout << std::setw(5) << matrix[i][j];
}
std::cout << std::endl;
}
}
// Функция для поиска индексов минимального и максимального элементов матрицы
void findMinMaxIndexes(int matrix[][SIZE], int& minRow, int& minCol, int& maxRow, int& maxCol) {
int minValue = matrix[0][0];
int maxValue = matrix[0][0];
for (int i = 0; i < SIZE; ++i) {
for (int j = 0; j < SIZE; ++j) {
if (matrix[i][j] < minValue) {
minValue = matrix[i][j];
minRow = i;
minCol = j;
}
if (matrix[i][j] > maxValue) {
maxValue = matrix[i][j];
maxRow = i;
maxCol = j;
}
}
}
}
// Функция для обмена значениями элементов произвольного столбца и произвольной строки квадратной матрицы
void swapRowAndColumn(int matrix[][SIZE], int row, int col) {
for (int i = 0; i < SIZE; ++i) {
std::swap(matrix[i][col], matrix[row][i]);
}
}
int main() {
int matrix[SIZE][SIZE];
fillMatrix(matrix);
std::cout << "Исходная матрица:\n";
printMatrix(matrix);
int minRow, minCol, maxRow, maxCol;
findMinMaxIndexes(matrix, minRow, minCol, maxRow, maxCol);
std::cout << "\nМинимальный элемент: " << matrix[minRow][minCol]
<< " (находится в строке " << minRow << ", столбце " << minCol << ")\n";
std::cout << "Максимальный элемент: " << matrix[maxRow][maxCol]
<< " (находится в строке " << maxRow << ", столбце " << maxCol << ")\n";
std::cout << "\nМеняем местами столбец " << minCol << " и строку " << maxRow << ":\n";
swapRowAndColumn(matrix, maxRow, minCol);
printMatrix(matrix);
return 0;
}
В этом коде я создал несколько функций, чтобы упростить решение задачи:
fillMatrix
: заполняет матрицу случайными числами из диапазона [-200; +200].printMatrix
: выводит матрицу на экран.findMinMaxIndexes
: ищет индексы минимального и максимального элементов в матрице.swapRowAndColumn
: меняет местами произвольный столбец и произвольную строку квадратной матрицы.
Обратите внимание, что я ограничил размер матрицы до 5x5 (может быть изменено в переменной SIZE
), чтобы визуально лучше увидеть результаты обмена местами строк и столбца.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili