• Предмет: Информатика
  • Автор: Kukuwka0Ha0DepeBe
  • Вопрос задан 4 месяца назад

C++
1. Створіть двовимірний масив. Заповніть його
випадковими числами і покажіть на екран. Користувач
вибирає кількість зрушень і положення (вліво, вправо,
вгору, вниз). Виконати зрушення масиву і показати на
екран отриманий результат. Зрушення циклічне.
Тиждень 10
1
Наприклад, якщо ми маємо такий масив.
1 2 0 4 5 3
4 5 3 9 0 1
і користувач вибрав зрушення на 2 розряди вправо, то
ми отримаємо:
5 3 1 2 0 4
0 1 4 5 3 9.

Ответы

Ответ дал: MagicSticks
1

Ответ:

#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

const int ROWS = 2;

const int COLS = 6;

void fillArray(int arr[][COLS], int rows, int cols) {

   srand(time(NULL));

   for (int i = 0; i < rows; i++) {

       for (int j = 0; j < cols; j++) {

           arr[i][j] = rand() % 10;

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

       }

       cout << endl;

   }

}

void shiftArray(int arr[][COLS], int rows, int cols, int shift, string direction) {

   int tempArr[ROWS][COLS];

   if (direction == "left") {

       for (int i = 0; i < rows; i++) {

           for (int j = 0; j < cols; j++) {

               tempArr[i][(j - shift + cols) % cols] = arr[i][j];

           }

       }

   } else if (direction == "right") {

       for (int i = 0; i < rows; i++) {

           for (int j = 0; j < cols; j++) {

               tempArr[i][(j + shift) % cols] = arr[i][j];

           }

       }

   } else if (direction == "up") {

       for (int i = 0; i < rows; i++) {

           for (int j = 0; j < cols; j++) {

               tempArr[(i - shift + rows) % rows][j] = arr[i][j];

           }

       }

   } else if (direction == "down") {

       for (int i = 0; i < rows; i++) {

           for (int j = 0; j < cols; j++) {

               tempArr[(i + shift) % rows][j] = arr[i][j];

           }

       }

   }

   for (int i = 0; i < rows; i++) {

       for (int j = 0; j < cols; j++) {

           arr[i][j] = tempArr[i][j];

       }

   }

   cout << endl << "Array after " << shift << " shift(s) " << direction << ":" << endl;

   for (int i = 0; i < rows; i++) {

       for (int j = 0; j < cols; j++) {

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

       }

       cout << endl;

   }

}

int main() {

   int arr[ROWS][COLS];

   fillArray(arr, ROWS, COLS);

   int shift;

   string direction;

   cout << "Enter shift value: ";

   cin >> shift;

   cout << "Enter shift direction (left, right, up, down): ";

   cin >> direction;

   shiftArray(arr, ROWS, COLS, shift, direction);

   return 0;

}

Вас заинтересует