Вопрос задан 06.10.2023 в 20:36. Предмет Информатика. Спрашивает Zelini Monika.

Дан двумерный массив. Переместить его элементы по периметру на 1 значение влево (против часовой

стрелки) и вывести изменённый массив. Использовать динамический массив с возможностью ввести размерность. Язык: C, C++
0 0
Перейти к ответам

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

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

Ответ:

Код на C++:

#include <iostream>

#include <conio.h>

using namespace std;

int main()

{

int N = 1, M = 1;

cout << "Vvedite razmernost' massiva M:";

cin >> M;

cout << "Vvedite razmernost' massiva N:";

cin >> N;

int** mas;

int** mas2;

mas = new int* [M];

mas2 = new int* [M];

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

{

 mas[i] = new int[N];

 mas2[i] = new int[N];

}

int p = 1;

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

{

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

 {

  mas[i][j] = p;

  p++;

 }

}

cout << "\nMassiv: \n";

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

{

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

 {

  mas2[i][j] = mas[i][j];

  cout.width(3);

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

 }

 cout << "\n";

}

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

{

 mas2[0][j] = mas[0][j + 1];

 mas2[0][N - 1] = mas[1][N - 1];

 mas2[M - 1][j + 1] = mas[M - 1][j];

 mas2[M - 1][0] = mas[M - 2][0];

}

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

{

 mas2[i + 1][0] = mas[i][0];

 mas2[i][N - 1] = mas[i + 1][N - 1];

}

cout << "\nMassiv posle smesheniya: \n";

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

{

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

 {

  cout.width(3);

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

 }

 cout << "\n";

}

_getch();

}

///////////////////////////////////////////////////////////////////////////////////////////////

Код на C#:

static void Main(string[] args)

       {

           int N = 0, M = 0;

           Console.Write("Введите размерность массива M: ");

           M = Convert.ToInt32(Console.ReadLine());

           Console.Write("Введите размерность массива N: ");

           N = Convert.ToInt32(Console.ReadLine());

           int[,] mas = new int[M, N];

           int[,] mas2 = new int[M, N];

           int p = 1;

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

           {

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

               {

                   mas[i, j] = p;

                   p++;

               }

           }

           Console.WriteLine();

           Console.Write("Массив: ");

           Console.WriteLine();

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

           {

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

               {

                   mas2[i, j] = mas[i, j];

                   Console.Write(String.Format("{0,3}", mas[i, j]));

               }

               Console.WriteLine();

           }

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

           {

               mas2[0, j] = mas[0, j + 1];

               mas2[0, N - 1] = mas[1, N - 1];

               mas2[M - 1, j + 1] = mas[M - 1, j];

               mas2[M - 1, 0] = mas[M - 2, 0];

           }

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

           {

               mas2[i + 1, 0] = mas[i, 0];

               mas2[i, N - 1] = mas[i + 1, N - 1];

           }

           Console.WriteLine();

           Console.Write("Массив после смещения: ");

           Console.WriteLine();

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

           {

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

               {

                   Console.Write(String.Format("{0,3}", mas2[i, j]));

               }

               Console.WriteLine();

           }

           Console.ReadKey();

       }

Объяснение:

Код задания на двух языках. Надеюсь, помог.

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

Для решения этой задачи вам потребуется создать двумерный динамический массив, заполнить его значениями и затем переместить элементы по его периметру на одну позицию влево. Вот пример реализации на языке C++:

cpp
#include <iostream> using namespace std; // Функция для перемещения элементов по периметру массива на 1 позицию влево void shiftElements(int** arr, int rows, int cols) { int* temp = new int[rows]; // Временный массив для хранения верхней строки // Сохраняем верхнюю строку во временный массив for (int i = 0; i < cols; i++) { temp[i] = arr[0][i]; } // Сдвигаем элементы верхней строки на 1 позицию влево for (int i = 0; i < cols - 1; i++) { arr[0][i] = arr[0][i + 1]; } // Сдвигаем элементы левого столбца на 1 позицию вверх for (int i = 0; i < rows - 1; i++) { arr[i][0] = arr[i + 1][0]; } // Сдвигаем элементы нижней строки на 1 позицию вправо for (int i = 0; i < cols - 1; i++) { arr[rows - 1][i] = arr[rows - 1][i + 1]; } // Сдвигаем элементы правого столбца на 1 позицию вниз for (int i = 0; i < rows - 1; i++) { arr[i][cols - 1] = arr[i + 1][cols - 1]; } // Восстанавливаем элементы правого столбца из временного массива for (int i = 0; i < rows - 1; i++) { arr[i + 1][cols - 1] = temp[i]; } delete[] temp; } int main() { int rows, cols; cout << "Введите количество строк: "; cin >> rows; cout << "Введите количество столбцов: "; cin >> cols; // Создаем двумерный динамический массив int** arr = new int*[rows]; for (int i = 0; i < rows; i++) { arr[i] = new int[cols]; } // Заполняем массив значениями int value = 1; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { arr[i][j] = value++; } } // Вызываем функцию для перемещения элементов shiftElements(arr, rows, cols); // Выводим измененный массив cout << "Измененный массив:" << endl; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { cout << arr[i][j] << "\t"; } cout << endl; } // Освобождаем память for (int i = 0; i < rows; i++) { delete[] arr[i]; } delete[] arr; return 0; }

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

0 0

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

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

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

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