Главная » 2019 » Февраль » 27 » Возрастание, убывание с проверкой
10:10
Возрастание, убывание с проверкой

#include <iostream>
#include <ctime>
using namespace std;
void vvod(int *x, int k);
void vvod2(int *x, int k);
void vivod(int *x, int k);
int min1(int *x, int k);
int max1(int *x, int k);
int max2(int *x, int k);
int max3(int *x, int k);
int min2(int *x, int k);
int min3(int *x, int k);
int pn(int *x, int k, int b);
void vozrastanie(int *x, int k);
void ubyvanie(int *x, int k);
bool proverka_vozr(int *x, int k);
bool proverka_ubyv(int *x, int k);
int main()
{
    const int n=100;
    int *a=new int[n];
    vvod2(a,n);
    cout<<"Massive A:"<<endl;
    vivod(a,n);
    //cout<<proverka_ubyv(a,n)<<endl;
    vozrastanie(a,n); 
    cout<<"NEW Massive A:"<<endl;
    vivod(a,n);
    ubyvanie(a,n);
    cout<<"NEW NEW Massive A:"<<endl;
    vivod(a,n);
    delete a;
    system("pause");
}
bool proverka_ubyv(int *x, int k)
{
    bool flag=true;
    for (int i=0;i<k-1;i++)
        if (x[i]<x[i+1]) flag=false;
    return flag;
}
bool proverka_vozr(int *x, int k)
{
    bool flag=true;
    for (int i=0;i<k-1;i++)
        if (x[i]>x[i+1]) flag=false;
    return flag;
}
void vozrastanie(int *x, int k)
{
    int min,imin;
    for (int uk=0;uk<k;uk++)
    {
        if (!proverka_vozr(x,k))
        {
            min=min1(&x[uk],k-uk);
            imin=pn(x,k,min);
            x[imin]=x[uk];
            x[uk]=min;
        }
        else break;
    }
}
void ubyvanie(int *x, int k)
{
    int max,imax;
    for (int uk=0;uk<k;uk++)
    {
        if (!proverka_ubyv(x,k))
        {
            max=max1(&x[uk],k-uk);
            imax=pn(x,k,max);
            x[imax]=x[uk];
            x[uk]=max;
        }
    }
}
int pn(int *x, int k, int b)
{
    int ib=-1;
    for (int i=0;i<k;i++)
        if (x[i]==b) ib=i;
    return ib;
}
int min1(int *x, int k)
{
    int m=x[0];
    for (int i=0;i<k;i++)
        if (x[i]<m) m=x[i];
    return m;
}
int max1(int *x, int k)
{
    int m=x[0];
    for (int i=0;i<k;i++)
        if (x[i]>m) m=x[i];
    return m;
}
void vvod2(int *x, int k)
{
    srand(time(0));
    for (int i=0;i<k;i++) x[i]=rand()%90+10;
}
void vvod(int *x, int k)
{
    for (int i=0;i<k;i++) cin>>x[i];
}
void vivod(int *x, int k)
{
    for (int i=0;i<k;i++) cout <<x[i]<<" ";
    cout<<endl;
}

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