C/C++

C++ Прошу помогите!!! \ Удалить столбец с номером К

1. Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать.
2. Выполнить указанное в варианте задание и вывести полученный массив на печать.
#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

int main()
{
int n,m,K,**A,x,y;
do
{
cout << "Количество строк в массиве = ";
cin >> n;
}while(n < 1);
do
{
cout << "Количество столбцов в массиве = ";
cin >> m;
}while(m < 2); // чтобы после удаления остался хотя бы один столбец
// выделение памяти
A = new int * [n];
for(x = 0; x < n; x++)
A[x] = new int[m];
// для того, чтобы данные были разными при каждом запуске программы
srand(time(nullptr));
// один раз запускаем программу, так рекомендуется
rand();
// заполняем массив случайными данными
for(x = 0; x < n; x++)
for(y = 0; y < m; y++)
A[x][y] = rand() % 31 - 15; // диапазон [-15;15]
// вывод на экран массива
cout << endl;
for(x = 0; x < n; x++)
{
for(y = 0; y < m; y++)
cout << A[x][y] << '\t';
cout << endl;
}
cout << endl;

do
{
cout << "Укажите индекс столбца, который нужно удалить? От "
<< 0 << " до " << m - 1 << ": ";
cin >> K;
}while(K < 0 || K >= m);
// "удаление" столбца
for(x = 0; x < n; x++)
for(y = K; y < m - 1; y++)
A[x][y] = A[x][y+1]; // смещение влево
m--; // уменьшили количество столбцов на 1

// вывод на экран изменённого массива
for(x = 0; x < n; x++)
{
for(y = 0; y < m; y++)
cout << A[x][y] << '\t';
cout << endl;
}

return 0;
}
Abdulla Abdullaev
Abdulla Abdullaev
83 896
Лучший ответ
Abdulla Abdullaev Если нужно удалять именно по номеру, а не по индексу столбца, то нужно заменить

do
{
cout << "Укажите индекс столбца, который нужно удалить? От "
<< 0 << " до " << m - 1 << ": ";
cin >> K;
} while(K < 0 || K >= m);

на

do
{
cout << "Укажите номер столбца, который нужно удалить? От "
<< 1 << " до " << m << ": ";
cin >> K;
} while(K < 1 || K > m);
K--; // чтобы превратить номер в индекс