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
#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
Вроде бы нельзя объявлять массив без фиксированного размера, только если он не в динамической памяти.
Что-то вроде:
int *mas, min, max, minI, maxI;
cin>>N>>M;
mas=new int[N][M];
Проверять условия как-то долго будет
Что-то вроде:
int *mas, min, max, minI, maxI;
cin>>N>>M;
mas=new int[N][M];
Проверять условия как-то долго будет
Сергей Олегович
глянем....
Похожие вопросы
- визуал с++ помогите не могу понять что не правильно в коде
- Помогите решить задачу на языке c++. Не понимаю условия в конце кода.
- ПРОСТО ПОМОЩЬ!!! решать ничего не надо, код внутри и задача, просто не понял одну вещь!!
- ПОМОГИТЕ ПОЖАЛУЙСТА ИСПРАВИТЬ КОД, НЕ МОГУ ПОНЯТЬ В ЧЁМ ПРИЧИНА, ПОЧЕМУ НЕ ПРАВИЛЬНО РАБОТАЕТ? ЯЗЫК СИ.
- Не могу понять смысл задачи, как её написать, напишите наглядный код программы.
- Помогите решить задачу в С++(условие внутри)
- Помогите, открыл .vbs файл и у меня теперь не открываються программы, любые! код внутри.
- Помогите с задачей по с++, буду признателен за код целиком.
- Какой язык даст большее быстродействие готового кода С++,Делфи, Ассемлер, в таком куске кода (внутри)?
- Народ, слезно прошу помочь решить задачу по информатике (програмирование), я просто ноль в этом(((