- Code: Tout sélectionner
program fusionner;
uses wincrt;
type
tab1=array[1..20]of integer;
tab2=array[1..40]of integer;
var
n,m,k:integer;
v1,v2:tab1;
v3:tab2;
procedure saisir(var n:integer);
begin
repeat
readln(n);
until n in [2..20];
end;
procedure remplir(var T:tab1;nb:integer);
var i:integer;
begin
writeln('donner l''emement n°',1);
readln(t[1]);
for i:=2 to nb do
begin
repeat
writeln('donner l''emement n°',i);
readln(t[i]);
until t[i]>T[i-1]
end;
end;
Procedure fusion(t1:tab1;n1: integer;t2:tab1;n2:integer;var t3:tab2;var n3:integer);
var ind3,ind1,ind2 : integer;
begin
ind1:=1;
ind2:=1;
ind3:=0;
repeat
ind3:=ind3+1;
if ind1>n1 then begin t3[ind3]:=t2[ind2]; ind2:=ind2+1;end
else
if ind2>n2 then begin t3[ind3]:=t1[ind1]; ind1:=ind1+1;end
else
if t1[ind1]<t2[ind2] then begin t3[ind3]:=t1[ind1]; ind1:=ind1+1;end
else
if t1[ind1]>t2[ind2] then begin t3[ind3]:=t2[ind2]; ind2:=ind2+1;end
else
begin t3[ind3]:=t1[ind1]; ind1:=ind1+1;ind2:=ind2+1;end;
until (ind1>n1) and (ind2>n2);
n3:=ind3;
end;
procedure afficher(t:tab2;n:integer);
var i:integer;
begin
for i:=1 to n do
writeln('l''element n° ',i,' est ',t[i]);
end;
begin
writeln('Donner la taille (n) de v1 :');saisir(n);
writeln('Donner la taille (m) de v2 :');saisir(m);
writeln('-----Remplissage de v1: -----------');
remplir(v1,n);
writeln('-----Remplissage de v2: -----------');
remplir(v2,m);
writeln('******** Affichage de v3 *******');
fusion(v1,n,v2,m,v3,k);
afficher(v3,k);
end.
Bon travail
