Вопрос задан 30.06.2023 в 08:48. Предмет Информатика. Спрашивает Онищенко Уля.

Matrix56. Дана матрица размера M × N (N — четное число). Поменять местами левую и правую половины

матрицы с помощью С++ с полным объяснением пожалуйста
0 0
Перейти к ответам

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

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

Ответ:

#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

 

int main()

{

   srand((int)time(0));

   int M, N;

   cout << "M="; cin >> M;

   

   do

   {

   cout << "N="; cin >> N;

   if (N%2!=0) cout << "N - even. Repeat please...\n";

   }

   while (N%2!=0);

   

     double **a = new double*[M];  

   for (int i = 0; i < M; i++)

      a[i]=new double[N];

   

   for (int i = 0; i < M; i++)

   {

   for (int j = 0; j < N; j++)

   {

   a[i][j]=rand()%9 + 1;

   cout << a[i][j] << " ";

   }

   cout << "\n";

   }

   cout << "\n";

   

   for (int i = 0; i < M; i++)    

   for (int j = 0; j < N/2; j++)    

   swap (a[i][j],a[i][j+N/2]);

   

   for (int i = 0; i < M; i++)

   {

   for (int j = 0; j < N; j++)

   cout << a[i][j] << " ";

   

   cout <<"\n";

   }

 

   for (int i = 0; i < M; i++)

   delete[]a[i];

   delete[]a;

 

system("pause");

return 0;

}

Объяснение:

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

Чтобы поменять местами левую и правую половины матрицы размера M × N (где N - четное число) на C++, вам нужно будет создать временную матрицу, чтобы сохранить левую половину, затем скопировать правую половину в левую и, наконец, скопировать временную матрицу (сохраненную левую половину) в правую половину. Вот подробный код с объяснениями:

cpp
#include <iostream> #include <vector> using namespace std; int main() { // Задаем размеры матрицы int M, N; cout << "Введите количество строк (M): "; cin >> M; cout << "Введите количество столбцов (N, четное число): "; cin >> N; // Проверка, что N - четное if (N % 2 != 0) { cout << "Количество столбцов (N) должно быть четным числом." << endl; return 1; } // Создаем матрицу размера M x N и заполняем ее данными vector<vector<int>> matrix(M, vector<int>(N)); cout << "Введите элементы матрицы:" << endl; for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { cin >> matrix[i][j]; } } // Создаем временную матрицу для сохранения левой половины vector<vector<int>> temp(M, vector<int>(N / 2)); // Копируем левую половину матрицы во временную матрицу for (int i = 0; i < M; i++) { for (int j = 0; j < N / 2; j++) { temp[i][j] = matrix[i][j]; } } // Копируем правую половину матрицы в левую половину for (int i = 0; i < M; i++) { for (int j = 0; j < N / 2; j++) { matrix[i][j] = matrix[i][j + N / 2]; } } // Копируем временную матрицу (сохраненную левую половину) в правую половину for (int i = 0; i < M; i++) { for (int j = N / 2; j < N; j++) { matrix[i][j] = temp[i][j - N / 2]; } } // Выводим измененную матрицу cout << "Измененная матрица:" << endl; for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { cout << matrix[i][j] << " "; } cout << endl; } return 0; }

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

0 0

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

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

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

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