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.
Ответы
Ответ:
#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;
}