1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| program base;
uses wincrt;
type
tab=array[1..100] of integer;
var
t:tab;
b1,b2,c,result:integer;
ch:string;
{ **** procedure lecture ****}
procedure lecture(var b1:integer;var b2:integer;var ch:string);
begin
writeln('donner la base a transferé');
readln(b1);
writeln ('donner la base auqelle vous aller transformé');
readln(b2) ;
writeln('donner le chiffre');
readln (ch);
end;
{ **** procedure som , elle permet de convertir un nombre donné à la
base dicimale **** }
procedure som( ch:string;b1:integer);
var
ta:tab;
i,n,l, poid,Result : integer ;
begin
l := Length(Ch) ;
if ch[i] in ['0'..'9'] then
begin
ta[i]:= ord(ch[i])-ord('0');
end
else
begin
ta[i]:= ord(ch[i])-ord('7');
end;
result:=0; poid:=1;
for i:= l downto 1 do
result:=result + (ta[i] * poid);
poid:=poid * b1;
end;
{**** procedure divi , elle permet la divition du nombre dicimale
sur b2 ***}
procedure divi(b2:integer;var result:integer; var c:integer) ;
begin
c := 0 ;
repeat
c:=c+1;
t[c]:= result mod b2;
result:=result div b2;
until result = 0
end;
{**** procedure affichage ****}
procedure affichage(t:tab;c:integer);
var
i:integer;
begin
for i:= c downto 1 do
if t[i] in [1..9] then write (t[i])
else write(chr(ord('A')+t[i]-10) );
end;
{ **** le programme principale ****}
begin
lecture(b1,b2,ch);
som(ch,b1);
divi(b2,result,c);
affichage(t,c);
end. |
Partager