#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 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);
void sdvig_vlevo(int *x, int k);
void sdvig_vlevo_min(int *x, int k);
void sdvig_vpravo(int *x, int k);
void vozrastanie_min(int *x, int k);
int main()
{
const int n=10;
int *a=new int[n];
vvod2(a,n);
cout<<"Massive A:"<<endl;
vivod(a,n);
vozrastanie_min(a,n);
cout<<"NEW Massive A:"<<endl;
vivod(a,n);
delete a;
system("pause");
}
void vozrastanie_min(int *x, int k)
{
for (int uk=0;uk<k;uk++)
sdvig_vlevo_min(&x[uk],k-uk);
}
void sdvig_vlevo_min(int *x, int k)
{
int min,imin;
min=min1(x,k);
imin=pn(x,k,min);
for (int i=1;i<=imin;i++)
sdvig_vlevo(x,k);
}
void sdvig_vlevo(int *x, int k)
{
int a=x[0];
for (int i=0;i<k-1;i++)
x[i]=x[i+1];
x[k-1]=a;
}
void sdvig_vpravo(int *x, int k)
{
int a=x[k-1];
for (int i=k-1;i>0;i--)
x[i]=x[i-1];
x[0]=a;
}
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;
}
|