Главная » 2019 » Апрель » 2 » Матрица. Поменять местами столбцы и строки с макс и мин
08:46
Матрица. Поменять местами столбцы и строки с макс и мин

#include <iostream>
#include <ctime>
using namespace std;
void vvod(int **a, int n, int m);
void vvod2(int **a, int n, int m);
void vivod(int **a, int n, int m);
void change_stolb_maxmin(int **a, int n, int m);
void change_str_maxmin(int **a, int n, int m);
int main()
{
    const int n=4,m=7;
    int **a=new int *[n];
    for (int i=0;i<n;i++) a[i]=new int[m];
    
    vvod2(a,n,m);
    cout<<"Matrix:"<<endl; vivod(a,n,m);
    change_stolb_maxmin(a,n,m);
    cout<<"New matrix:"<<endl; vivod(a,n,m);
    change_str_maxmin(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 change_str_maxmin(int **a, int n, int m)
{
    int imax=0,imin=0;
    int max=a[0][0],min=a[0][0];
    for (int i=0;i<n;i++)
        for (int j=0;j<n;j++)
        {
            if (a[i][j]>max)
            {
                max=a[i][j]; imax=i;
            }
            if (a[i][j]<min)
            {
                min=a[i][j]; imin=i;
            }
        }
    cout<<"max="<<max<<" imax="<<imax<<endl;
    cout<<"min="<<min<<" imin="<<imin<<endl;
    int temp;
    for (int j=0;j<m;j++)
    {
        temp=a[imax][j];
        a[imax][j]=a[imin][j];
        a[imin][j]=temp;
    }
}
void change_stolb_maxmin(int **a, int n, int m)
{
    int jmax=0,jmin=0;
    int max=a[0][0],min=a[0][0];
    for (int i=0;i<n;i++)
        for (int j=0;j<n;j++)
        {
            if (a[i][j]>max)
            {
                max=a[i][j]; jmax=j;
            }
            if (a[i][j]<min)
            {
                min=a[i][j]; jmin=j;
            }
        }
    cout<<"max="<<max<<" jmax="<<jmax<<endl;
    cout<<"min="<<min<<" jmin="<<jmin<<endl;
    int temp;
    for (int i=0;i<n;i++)
    {
        temp=a[i][jmax];
        a[i][jmax]=a[i][jmin];
        a[i][jmin]=temp;
    }
}
void vvod(int **a, int n, int m)
{
    for (int i=0;i<n;i++)
        for (int j=0;j<m;j++)
            cin>>a[i][j];
}
void vvod2(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;
     }
}

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