//Упорядочить каждый столбец матрицы по возрастанию
#include <iostream>
#include <ctime>
using namespace std;
void vvod(int **a, int n, int m);
void vivod(int **a, int n, int m);
int nomer(int *x, int m, int chislo);
void vozr(int *x, int m);
void vozr_v_stroke(int **a, int n, int m);
void vozr_v_stolbce(int **a, int n, int m);
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);
vozr_v_stolbce(a,n,m);
cout<<"New Matrix"<<endl; vivod(a,n,m);
for (int i=0;i<n;i++) delete []a[i];
delete a;
system("pause");
}
void vozr_v_stolbce(int **a, int n, int m)
{
int *temp=new int[n];
for (int j=0;j<m;j++)
{
for (int i=0;i<n;i++) temp[i]=a[i][j];
vozr(temp,n);
for (int i=0;i<n;i++) a[i][j]=temp[i];
}
delete temp;
}
void vozr_v_stroke(int **a, int n, int m)
{
for (int i=0;i<n;i++)
vozr(a[i],m);
}
int min(int *x, int m)
{
int mi=x[0];
for (int i=0;i<m;i++)
if (x[i]<mi) mi=x[i];
return mi;
}
int nomer(int *x, int m, int chislo)
{
int n=0;
for (int i=0;i<m;i++)
if (x[i]==chislo)
{
n=i; break;
}
return n;
}
void vozr(int *x, int m)
{
int mi,nmin;
for (int k=0;k<m;k++)
{
mi=min(x+k,m-k);
nmin=nomer(x+k,m-k,mi);
x[nmin+k]=x[k]; x[k]=mi;
}
}
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;
}
}
|