Sunteți pe pagina 1din 3

§6. Interclasarea a doi vectori.

Se dau doi vectori a şi b. Un al treilea vector, c rezultă din interclasarea celor doi
vectori a şi b. Algoritmul este următorul:
- se citesc lungimile celor doi vectori. Vectorul a are lungimea m şi vectorul b
are lungimea n.
- Se citesc elementele vectorilor a şi b
- Se iniţializează i şi j cu 1 şi k cu 0;
- Cât timp vectorul a nu este parcurs (while(i<=m) şi) cât timp vectorul b nu
este parcurs (while(j<=n))
- Dacă a[i]<b[j] atunci
- k creşte cu 1 (se trece la următorul element din vectorul c)
- elementul c[k] ia valoarea lui a[i]
- i creşte cu 1 (se trece la următorul element din vectorul a)
- dacă a[i]>b[j] atunci
- k creşte cu 1 (se trece la urmatorul element din vectorul c)
- elementul c[k] ia valoarea lui b[j]
- j creste cu 1 (se trece la urmatorul element din vectorul b)
- când s-a terminat unul din vectori se trece la completarea lui c
cu elementele vectorului ramas
- dacă s-a terminat vectorul b (adica if(i<=m)) atunci cat timp nu s-
a terminat de parcurs vectorul a (while (i<=m))
- k creste cu 1
- c[k] ia valoarea elementului a[i]
- i creste cu 1 (se trece la urmatorul element din vector)
- Dacă s-a terminat vectorul a (adica if(j<=n)) atunci cat timp nu s-a
terminat de parcurs vectorul b (while(j<=n))
- k creste cu 1
- c[k] ia valoarea elementului b[j]
- j creste cu 1 (se trece la urmatorul element din vectorul b)
- se afiseaza elementele vectorului c stiind ca are m elemente

Program C:

#include<iostream.h>
#include<conio.h>
typedef int sir[25];
sir a,b,c;
int n,m,i,j,k;
void main()
{
clrscr();
cout<<"dati lungimea vectorului a:"; cin>>m;
cout<<"dati lungimea vectorului b:"; cin>>n;
for(i=1;i<=m;i++)
{ cout<<"a["<<i<<"]="; cin>>a[i];
}
for(j=1;j<=n;j++)
{
cout<<"b["<<j<<"]="; cin>>b[j];
}
i=1;j=1;k=0;
while((i<=m)&&(j<=n))
{ if(a[i]<b[j])
{
k++; c[k]=a[i]; i++; }
else
{ k++; c[k]=b[j]; j++; }
}
if(i<=m)
{
while(i<=m)
{ k++; c[k]=a[i]; i++; }
}
if(j<=n)
{ while(j<=n)
{ k++; c[k]=b[j]; j++; }
}
for(i=1;i<=k;i++)
cout<<"c["<<i<<"]="<<c[i]<<endl;
getch();
}

Program Pascal:
Program intercl;
uses crt;
var x,y,z:array[1..30] of integer;
i,j,k,m,n:integer;
Begin
clrscr;
write('m= '); readln(m);
write('n= '); readln(n);
write('x[1]= '); readln(x[1]);
for i:=2 to m do
repeat
write('x[',i,']= '); readln(x[i]);
until x[i]>x[i-1];
writeln;
write('y[1]= '); readln(y[1]);
for j:=2 to n do
repeat
write('y[',j,']= '); readln(y[j]);
until y[j]>y[j-1];
i:=1; j:=1; k:=0;
while (i<=m) and (j<=n) do
if x[i]<y[j] then
begin
k:=k+1; z[k]:=x[i]; i:=i+1;
end
else
begin
k:=k+1; z[k]:=y[j]; j:=j+1;
end;
if i<=m then
while i<=m do
begin
k:=k+1; z[k]:=x[i]; i:=i+1;
end;
if j<=n then
while j<=n do
begin
k:=k+1; z[k]:=y[j]; j:=j+1;
end;
for i:=1 to k do write(z[i], ' ');
readkey;
End.

S-ar putea să vă placă și