Главная » 2020 » Март » 26 » Матрицы. Упорядочить каждый столбец матрицы по возрастанию
18:26
Матрицы. Упорядочить каждый столбец матрицы по возрастанию

//Упорядочить каждый столбец матрицы по возрастанию
#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;
    }
}

Просмотров: 319 | Добавил: denjes | Рейтинг: 0.0/0
Всего комментариев: 0
avatar