Вопрос задан 24.07.2023 в 03:40. Предмет Информатика. Спрашивает Петров Ваня.

Здравствуйте, помогите с заданием/ (С++) Написать программу,меняющую местами в произвольной

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

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Набока Мария.

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

}


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Здравствуйте! Я помогу вам написать программу на 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; }

В этом коде я создал несколько функций, чтобы упростить решение задачи:

  1. fillMatrix: заполняет матрицу случайными числами из диапазона [-200; +200].
  2. printMatrix: выводит матрицу на экран.
  3. findMinMaxIndexes: ищет индексы минимального и максимального элементов в матрице.
  4. swapRowAndColumn: меняет местами произвольный столбец и произвольную строку квадратной матрицы.

Обратите внимание, что я ограничил размер матрицы до 5x5 (может быть изменено в переменной SIZE), чтобы визуально лучше увидеть результаты обмена местами строк и столбца.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос