#include <iostream>
#include <ctime>
using namespace std;
void vvod(int *x, int m);
void vivod(int *x, int m);
int max(int *x, int m);
int min(int *x, int m);
int nomer(int *x, int m, int chislo);
void vozr2(int *x, int m);
void MaxMin(int *x1, int m1,int *x2, int m2);
void SliyanUpor(int *x1, int m1,int *x2, int m2);
void SliyanUpor2(int *x1, int m1,int *x2, int m2);
int main(){
srand(time(0));
const int n1=10,n2=15;
int *a=new int[n1];
int *b=new int[n2];
vvod(a,n1); vivod(a,n1);
vvod(b,n2); vivod(b,n2);
SliyanUpor2(a,n1,b,n2);
delete a,b;
system("pause");
return 0;
}
void SliyanUpor2(int *x1, int m1,int *x2, int m2)
{
int *temp=new int[m1+m2];
int k=0;
for (int i=0;i<m1;i++,k++) temp[k]=x1[i];
for (int i=0;i<m2;i++,k++) temp[k]=x2[i];
vozr2(temp,m1+m2); vivod(temp,m1+m2);
delete temp;
}
void SliyanUpor(int *x1, int m1,int *x2, int m2)
{
vozr2(x1,m1);
vozr2(x2,m2);
int i1=0,i2=0;
while ((i1<m1)&&(i2<m2)){
if (x1[i1]<=x2[i2]) {
cout<<x1[i1]<<" "; i1++;
}
else { cout<<x2[i2]<<" "; i2++;
}
}
if (i1==m1) for ( ;i2<m2;i2++) cout<<x2[i2]<<" ";
if (i2==m2) for ( ;i1<m1;i1++) cout<<x1[i1]<<" ";
cout<<endl;
}
void MaxMin(int *x1, int m1,int *x2, int m2)
{
int Max1=max(x1,m1), Max2=max(x2,m2);
int Min1=min(x1,m1), Min2=min(x2,m2);
cout<<"Max A="<<Max1<<" Max B="<<Max2<<endl;
cout<<"Min A="<<Min1<<" Min B="<<Min2<<endl;
if (Max1>Max2) cout<<"Max A > Max B"<<endl;
else if (Max1<Max2) cout<<"Max A < Max B"<<endl;
else cout<<"Max A = Max B"<<endl;
if (Min1>Min2) cout<<"Min A > Min B"<<endl;
else if (Min1<Min2) cout<<"Min A < Min B"<<endl;
else cout<<"Min A = Min B"<<endl;
}
void vozr2(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 *x, int m)
{
for (int i=0;i<m;i++) x[i]=rand()%90+10;
}
void vivod(int *x, int m)
{
for (int i=0;i<m;i++) cout<<x[i]<<" ";
cout<<endl;
}
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;
}
int min(int *x, int m){
int MIN=x[0];
for (int i=0;i<m;i++)
if (x[i]<MIN) MIN=x[i];
return MIN;
}
int max(int *x, int m){
int MAX=x[0];
for (int i=0;i<m;i++)
if (x[i]>MAX) MAX=x[i];
return MAX;
}
|