#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int const ROWS = 20;
int const COLMNS = 40;
int const ROWS2 = 25;
int const COLMNS2 = 24;
int a[COLMNS][ROWS];
int b[COLMNS2][ROWS2];
void task1078()
{
cout << "Task 1078 / Дан Двумерный массив из 20 строк. Перенести первые k строк в конец массива, соблюдая порядок их следования.\n";
cout << "Исходная матрица: " << endl;
int i;
int j;
int k;
for (i = 1; i < ROWS; i++) {
for (j = 1; j < ROWS; j++) {
a[i][j] = i;// rand() % 10 ;
cout << setw(5) << a[i][j];
}
cout << endl;
}
cout << "\n" << endl;
cout << "Введите меняемую строку: " << endl;
cin >> k;
cout << "Измененная матрица: " << endl;
if (k >= 1 && k <= 20) {
for (i = 1; i <= 20; i++) {
if (i <= k) {
for (j = 1; j <= 20; j++) { a[i + 20][j] = a[i][j]; }
}
for (j = 1; j <= 20; j++) { a[i][j] = a[i + k][j]; }
}
for (i = 1; i <= 20; i++) {
for (j = 1; j <= 20; j++) {
cout << setw(5) << a[i][j];
}
cout << endl;
}
}
else
{
cout << "Некоректно введено значение столбца. Повторите попытку." << endl;
}
}
void task1079()
{
cout << "\nTask 1079 / Дан Двумерный массив из 24 столбцов. Перенести первые р столбцов в конец массива, соблюдая порядок их следования.\n";
cout << "Исходная матрица: " << endl;
int i;
int j;
int k;
int new_row;
for (i = 1; i <= 24; i++) {
for (j = 1; j <= 24; j++) {
b[i][j] = j; rand() % 10 ;
cout << setw(5) << b[i][j];
}
cout << endl;
}
cout << "\n" << endl;
cout << "Введите меняемый столбец: " << endl;
cin >> new_row;
cout << "Измененная матрица: " << endl;
if (new_row >= 1 && new_row <= 24) {
for (j = 1; j <= new_row; j++)
{
for (i = 1; i <= 24; i++) { b[i][0] = b[i][1]; }
for (k = 1; k < 24; k++)
{
for (i = 1; i <= 24; i++) { b[i][k] = b[i][k + 1]; }
}
for (i = 1; i <= 24; i++) { b[i][24] = b[i][0]; }
}
for (i = 1; i <= 24; i++) {
for (j = 1; j <= 24; j++) {
cout << setw(5) << b[i][j];
}
cout << endl;
}
}
else
{
cout << "Некоректно введено значение столбца. Повторите попытку." << endl;
}
}
int main()
{
setlocale(0, "ru");
task1078();
task1079();
}