//Поменять местами столбцы, где находятся минимальный и максимальный элементы
#include <iostream>
#include <ctime>
using namespace std;
void vvod(int **a, int n, int m);
void vivod(int **a, int n, int m);
void obmen_Stolbci(int **a, int n, int m, int j1, int j2);
int max (int **a, int n, int m);
int min (int **a, int n, int m);
void nomer(int **a, int n, int m, int elem, int &nomer_i, int &nomer_j);
int main()
{
const int n=3,m=4;
int **a=new int *[n];
for (int i=0;i<n;i++) a[i]=new int[m];
vvod(a,n,m); vivod(a,n,m);
int i1,j1,i2,j2;
nomer(a,n,m,max(a,n,m),i1,j1);
nomer(a,n,m,min(a,n,m),i2,j2);
obmen_Stolbci(a,n,m,j1,j2);
cout<<"New Matrix"<<endl; vivod(a,n,m);
for (int i=0;i<n;i++) delete []a[i];
delete a;
system("pause");
}
void obmen_Stolbci(int **a, int n, int m, int j1, int j2)
{
int temp;
for (int i=0;i<n;i++)
{
temp=a[i][j1];
a[i][j1]=a[i][j2];
a[i][j2]=temp;
}
}
void nomer(int **a, int n, int m, int elem, int &nomer_i, int &nomer_j)
{
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
if (a[i][j]==elem)
{
nomer_i=i; nomer_j=j; break;
}
}
int min (int **a, int n, int m)
{
int mi=a[0][0];
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
if (a[i][j]<mi) mi=a[i][j];
return mi;
}
int max (int **a, int n, int m)
{
int ma=a[0][0];
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
if (a[i][j]>ma) ma=a[i][j];
return ma;
}
void vvod(int **a, int n, int m)
{
srand(time(0));
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
a[i][j]=rand()%90+10;
}
void vivod(int **a, int n, int m)
{
for (int i=0;i<n;i++)
{
for (int j=0;j<m;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
|