Ошибка в коде с++ начинающий
Всем здравствуйте! Только начала изучать двумерные массивы и столкнулась с проблемой в задаче обмен столбцов: в заданном двумерном массиве чисел A, состоящем из n строк и m столбцов, необходимо найти номер столбца, в котором находится максимальный элемент матрицы. Затем требуется поменять местами первый столбец с найденным. Кто поможет найти ошибку? Функции и векторы использовать нельзя. Код:
#include <iostream>
using namespace std;
int main()
{
int n, m, k;
cin>>n>>m;
int a[n][m];
int max=-101;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++)
cin>>a[i][j];
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++)
if(a[i][j]>max){
max=a[i][j];
k=j;}
}
for(int i=k; i>0; i--)
swap(a[i][0], max);
for(int i=0; i<n; i++){
cout<<endl;
for(int j=0; j<m; j++)
cout<<a[i][j]<<" ";
}
}
Источник: Stack Overflow на русском