Program Conversion_b1_b2; Var nb, reste : Array [1..50] of 0..15; b1, b2, n, i, j, err, nb10 : Integer; nch : String; Begin Repeat Writeln ('Base b1 = '); Readln (b1); Writeln ('Base b2 = '); Readln (b2); Until (b1 in [2..16]) and (b2 in [2..16]); Writeln ('Donner le nombre à convertir'); Readln (nch); n:=Length (nch); For i:=1 To n Do If ORD (nch[i]) <65 Then VAL (nch[i], nb[i], err) Else nb[i] :=(ORD (nch[i]) - ORD ('A') + 10); {conversion de la base b1 au décimal} nb10 :=0; For i:=1 To n-1 Do nb10:=(nb10+nb[i])*b1; nb10:=nb10+nb[n]; {conversion de nb10 du décimal à la base b2} i:=0; Repeat i:=i+1; reste[i]:=nb10 mod b2; nb10:=nb10 div b2; Until nb10=0; {affichage du résultat} For j:=i Downto 1 Do If reste[j] < 10 Then Write (reste[j]) Else Writeln (CHR (reste[j]-10 + ORD ('A'))); End.