Зад: Да се направи програма за двумерен масив, която разменя местата на редовете, съдържащи максималния и минималния елемент. Да се изведе новият масив.
Аз почти съм я решила, но накрая когато трябва да се разменят редовете с максимален и минимален елемент не става. Матрицата, която ми се извежда е следната:
от 3 -1 9 1 става следната 3 -1 9 1
2 0 -3 -2 2 0 -3 -2
-7 0 2 4 3 -1 9 1
т.е максималния отива на мястото на минималния, но не и минималния да отиде на мястото на максималния.
Вижте как я решавам:
#include<iostream.h>
#include<iomanip.h>
void main()
{
float a[10][12];
int n,m;
do { cout<<" kolko sa redovete ";
cin>>n;} while (n<=0||n>10);
do{cout<<"kolko sa stylbovete ";
cin>>m;}while (m<=0||m>12);
int i,j;
for (i=0;i<=n-1;i=i+1)
for (j=0;j<=m-1;j=j+1){cout<<"chisloto na "<< i <<" red i na "<< j <<" stulb ";
cin>>a[i][j];
}
cout<<"\n pyrvonachalno matricata e:\n";
for(i=0;i<=n-1;i=i+1)
{for(j=0;j<=m-1;j=j+1)cout<<setw(6)<<a[i][j];
cout<<endl;
}
float amax= a[0][0];
float amin= a[0][0];
int nmin=0;
int nmax=0;
for (i=0; i<=n-1; i=i+1)
for (j=0; j<=m-1; j=j+1)
if (a[i][j]>amax)
{ amax=a[i][j];
nmax=i;}
cout<<" maksimalniqt element e = "<<amax<<" i se namira na red "<<nmax;
cout<<endl;
for (i=0; i<=n-1; i=i+1)
for (j=0; j<=m-1; j=j+1)
if(a[i][j]<amin)
{amin=a[i][j];
nmin=i;}
cout<<" minimalniqt element na masiva e = "<<amin<<" i se namira na red "<<nmin;
cout<<endl;
int b;
for(i=0; i<=n-1; i=i+1)
for(j=0; j<=m-1; j=j+1)
if(nmax==nmin) cout<<" nqma razmqna na mestata na redovete i matricata ostava sushtata:\n";
else {a[i][j] = a[i][j];
a[nmax][j] = a[nmin][j];
a[nmin][j] = a[nmax][j];}
for (i=0;i<=n-1;i=i+1)
{for (j=0;j<=m-1;j=j+1)
cout<<setw(6)<< a[i][j] ;
cout<<endl;
}
}
Моля за помощ за извеждането на правилната матрица.