Другие языки программирования и технологии

помогите с задачей С++..в общем не могу понять что не правильно сделал... условие и код внутри

http://pastebin.com/9FuYxbHU - код

условие:

дан двумерный массив NxM (возродятся с клавиатуры) необходимо поменять местами строки с наибольшим и наименьшим элементами!

пожалуйста объясните что не так... заранее спасибо!
Вот в виде массива массивов
#include <iostream>

using namespace std;

void show_mas(int **arr, int N, int M);

int main()
{
int N, M, k;

cout<< "Enter the size of arreas(2 numbers): "<< endl;
cin >>N >>M;

int min, max, minI, maxI;
int ** mas2;

// sozdajom massiv ukazatelej
mas2 = new int * [ N];

// sozdajom massivy znachenij dl'a kazhdoj stoki
for(int i= 0; i< N; i++)
{
mas2[ i]= new int[ M];
}

for(int i=0; i< N; i++)
{
for(int j=0; j< M; j++)
{
cout<< "Enter element: mas[ "<< i << " ][ " << j<< "]= ";
cin >>mas2[ i][ j];
}
}

show_mas(mas2, N, M);

maxI= 0;
minI= 0;
max=mas2[ 0][ 0];
min=mas2[ 0][ 0];

for(int i=0; i < N; i++)
{
for(int j=0; j < M; j++)
{
if(mas2[ i][ j] > max)
{
max= mas2[ i][ j];
maxI= i;
}

if(mas2[ i][ j] < min)
{
min= mas2[ i][ j];
minI= i;
}
}
}
cout<<
"minI= "<< minI<< ","<< min<< endl<<
"maxI= "<< maxI<< ","<< max<< endl;

if(minI != maxI)
{
for(int j=0; j< M; j++)
{
k=mas2[ maxI][ j];
mas2[ maxI][ j]=mas2[ minI][ j];
mas2[ minI][ j]=k;
}
}
cout<< "Masiv: "<< endl;

show_mas(mas2, N, M);

cout<< endl<<
"min = "<< min<< endl<<
"max = "<< max<< endl<<
"minI = "<< minI<< endl<<
"maxI = "<< maxI<< endl;

// ochishchajem pamjat' naoborot
for(int i= 0; i< N; i++)
{
delete[ ] mas2[ i];
}

delete[ ] mas2;

cin.get();
}
void show_mas(int **arr, int N, int M)
{
for(int i=0; i< N; i++)
{
for(int j=0; j< M; j++)
{
cout<< arr[ i][ j]<< " ";
}
cout<< endl;
}
cout<< endl;

}
___
Вот в виде одномерного массива
#include <iostream>

using namespace std;

void show_mas(int *arr, int N, int M);

int main()
{
int N, M, k;

cout<< "Enter the size of arreas(2 numbers): "<< endl;
cin>>N>>M;

int mas[ N*M], min, max, minI, maxI;

for(int i=0; i< N; i++)
{
for(int j=0; j< M; j++)
{
cout<< "Enter element: mas[ "<< i<< "][ "<< j<< "]= ";
cin>>mas[ i*M+j];
}
}

show_mas(mas, N, M);

maxI= 0;
minI= 0;
max=mas[ 0];
min=mas[ 0];

for(int i=0; i < N; i++)
{
for(int j=0; j < M; j++)
{
if(mas[ i*M+j] > max)
{
max= mas[ i*M + j];
maxI= i;
}

if(mas[ i*M + j] < min)
{
min= mas[ i*M + j];
minI= i;
}
}
}
cout<<
"minI= "<< minI<< ","<< min<< endl<<
"maxI= "<< maxI<< ","<< max<< endl;

if(minI != maxI)
{
for(int j=0; j< M; j++)
{
k=mas[ maxI*M + j];
mas[ maxI*M + j]=mas[ minI*M + j];
mas[ minI*M + j]=k;
}
}
cout<< "Masiv: "<< endl;

show_mas(mas, N, M);

cout<< endl<<
"min = "<< min<< endl<<
"max = "<< max<< endl<<
"minI = "<< minI<< endl<<
"maxI = "<< maxI<< endl;

cin.get();
}
void show_mas(int *arr, int N, int M)
{
for(int i=0; i< N; i++)
{
for(int j=0; j< M; j++)
{
cout<< arr[ i*M + j]<< " ";
}
cout<< endl;
}
cout<< endl;

}
___
Погуглите чтото типа
многомерные массивы переменного размера
или
многомерные динамические массивы C++ vector realloc

вот пара сайтов где подробно про это написано
bitbybit . ru / tutorial / cpp / lesson / 224

forum . vingrad . ru / forum / s / c3388909607074ee6a533e70da746116 / topic - 189118 / anchor - entry1362321 / 0 . html
ВС
Вадим Сорокин
23 527
Лучший ответ
Вроде бы нельзя объявлять массив без фиксированного размера, только если он не в динамической памяти.
Что-то вроде:
int *mas, min, max, minI, maxI;
cin>>N>>M;
mas=new int[N][M];
Проверять условия как-то долго будет
Егор Trifonovdj Kent
Егор Trifonovdj Kent
2 238