
Biletul nr. 15 pentru atestat informatica la programare 2015
Codul sursa al aplicatiei in C++ de mai jos realizeaza ordonarea unui vector prin interclasarea celor doua subsecvente ale lui iar rezultatul este scris intr-un fisier date.out.
Enuntul problemei:
15. Se considera un vector cu n componente. Stiind ca el contine doua subsecvente de numere ordonate crescator , sa se ordoneze intregul vector prin interclasarea celor doua subsecvente.
Rezolvarea problemei
# include <iostream.h>
# include "functii.txt"
void interclasare(int r[],int &l,int x[],int lx,int y[],int ly)
{
int i=1,j=1;
l=0;
while(i<=lx && j<=ly)
{
if(x[i]<=y[j])
{ l++;
r[l]=x[i++];}
else { l++;
r[l]=y[j++];
}
while(i<=lx)
{ l++;
r[l]=x[i++];}
while(j<=ly)
{ l++;
r[l]=y[j++];}
}
void main()
{
int x[30],n,l,i,r[30],y[30],ly=0,z[30],lz=0;
citeste(x,n);
for(i=1;i<n;i++)
if(x[i]>x[i+1])
{ ly++;
y[ly]=x[i];}
for(int j=i+1;j<=n;j++)
{lz++;
z[lz]=x[j];}
}
else
{ ly++;
y[ly]=x[i];
}
scrie(y,ly);
cout<<endl;
scrie(z,lz); cout<<endl;
interclasare(r,l,y,ly,z,lz);
scrie(r,l);
cout<<endl;
}
Scris de