Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- #include <random>
- #include <ctime>
- using namespace std;
- void printArray(int** array, int row, int col) {
- for (int i = 0; i < row; ++i) {
- for (int j = 0; j < col; ++j) {
- cout << setw(3) << array[i][j] << " ";
- }
- cout << endl;
- }
- cout << endl;
- }
- void shiftUp(int** array, int** array2, int row, int col, int num) {
- if (num > row)
- num = num % row;
- for (int i = 0; i < row; ++i) {
- for (int j = 0; j < col; ++j) {
- if (i + num < row)
- array2[i][j] = array[i + num][j];
- else
- array2[i][j] = array[(num + i) - row][j];
- }
- }
- }
- void shiftDown(int** array, int** array2, int row, int col, int num) {
- if (num > row)
- num = num % row;
- for (int i = 0; i < row; ++i) {
- for (int j = 0; j < col; ++j) {
- if (i - num >= 0)
- array2[i][j] = array[i - num][j];
- else
- array2[i][j] = array[row - (num - i)][j];
- }
- }
- }
- void shiftRight(int** array, int** array2, int row, int col, int num) {
- if (num > col)
- num = num % col;
- for (int i = 0; i < row; ++i) {
- for (int j = 0; j < col; ++j) {
- if (j - num >= 0)
- array2[i][j] = array[i][j - num];
- else
- array2[i][j] = array[i][col - (num - j)];
- }
- }
- }
- void shiftLeft(int** array, int** array2, int row, int col, int num) {
- if (num > col)
- num = num % col;
- for (int i = 0; i < row; ++i) {
- for (int j = 0; j < col; ++j) {
- if(j + num < col)
- array2[i][j] = array[i][j + num];
- else
- array2[i][j] = array[i][(num + j) - col];
- }
- }
- }
- int** shift(int** array, int row, int col, int num, int dir) {
- int** array2 = new int* [row];
- for (int i = 0; i < row; ++i) {
- array2[i] = new int[col];
- }
- switch (dir) {
- case 1: shiftRight(array, array2, row, col, num); break;
- case 2: shiftLeft(array, array2, row, col, num); break;
- case 3: shiftUp(array, array2, row, col, num); break;
- case 4: shiftDown(array, array2, row, col, num); break;
- }
- return array2;
- }
- int main(){
- random_device rand;
- mt19937 gen(time(NULL));
- uniform_int_distribution<> result(0, 100);
- const int row = 5;
- const int col = 6;
- int** array = new int* [row];
- for (int i = 0; i < row; ++i) {
- array[i] = new int[col];
- for (int j = 0; j < col; ++j) {
- array[i][j] = result(gen);
- }
- }
- printArray(array, row, col);
- cout << "Enter the number of shifts: ";
- int shifts;
- cin >> shifts;
- cout << "Enter the direction: \n";
- cout << "1 - right;\n" << "2 - left;\n" << "3 - up;\n" << "4 - down.\n";
- int dir;
- cin >> dir;
- if (dir < 1 || dir > 4) {
- cout << "Incorrect input!";
- return 1;
- }
- int** array2 = shift(array, row, col, shifts, dir);
- printArray(array2, row, col);
- for (int i = 0; i < row; ++i) {
- delete[] array[i];
- }
- delete[] array;
- for (int i = 0; i < row; ++i) {
- delete[] array2[i];
- }
- delete[] array2;
- return 0;
- }
Add Comment
Please, Sign In to add comment