program bac2010_26mai_10h;
uses wincrt;
type
tab=array[1..100] of integer;
var
divis, mult :tab;
a,b,k,s : integer;
procedure saisir (var a,b : integer);
begin repeat
write( ' donner le 1er nombre : ' ); readln(a);
until a in [2..100];
repeat
write( ' donner le 2eme nombre : ' ); readln(b);
until b in [2..100];
end;
procedure extraire (a,b : integer; var t1, t2 : tab; var k: integer);
var j:integer;
begin t1[1]:= a;
k:= 1;
repeat k:= k+1;
t1[k]:= t1[k-1] div 2;
until (t1[k]=1);
t2[1]:= b;
for j:= 2 to k do t2[j]:= t2[j-1]*2;
end;
procedure affiche (t1,t2 :tab; k: integer; var s:integer);
var i: integer;
begin
write('le resultat du produit de ',a,' par ',b,' est: ');
s:=0;
for i:= 1 to k do if t1[i] mod 2 <>0 then begin
write(t2[i],' ');
s:=s+t2[i];
end;
write('= ',s);
end;
begin saisir (a,b);
extraire(a,b,divis,mult,k);
affiche (divis,mult,k,s);
end.