A voir également:
- Exercices de convertion dans les bases
- Base de registre - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- Comment remettre le clavier en bas de l'écran - Guide
- Formules excel de base - Guide
- Transmath 3eme corrigé exercices - Forum Loisirs / Divertissements
3 réponses
voila un programme de conversion d'une base B1 à une Base B2, ecrit en Pascal
program conversion;
uses wincrt;
var
n1,n2:string;
b1,b2:integer;
procedure saisie ( var b1,b2:integer; var n1:string);
var
test:boolean;
i,d,e:integer;
x:char;
begin
repeat
writeln('b1:');
readln(b1);
writeln('b2');
readln(b2);
until ( b1 in [2..16])and (b2 in[2..16]);
repeat
write('donnez n: ');
readln(n1);
i:=1;
test:=true;
if b1<=10 then
repeat
n1[i]:=upcase(n1[i]);
val(n1[i],d,e);
if e<>0 then test:=false
else
begin
if not(d in [0..b1-1] ) then
test:=false
else i:=i+1;
end;
until (test=false)or (i>length (n1))
else
repeat
n1[i]:=upcase(n1[i]);
x:=n1[i];
if x > chr(b1+55) then test:=false
else
i:=i+1;
until (test=false) or (i>length(n1));
until (test);
end;
function puiss(a,b:integer):integer;
var k,p:integer;
begin
p:=1;
for k:=1 to b do
p:= p*a;
puiss:=p;
end;
procedure convertir(n1:string;b1,b2:integer);
var n,s,d,e:integer;
res:string;
function b1_b10(n1:string):integer;
var i,j:integer;
begin
s:=0;
j:= length(n1)-1;
for i:= 1 to length(n1) do
begin
val(n1[i],d,e);
if e<>0 then d:=ord(n1[i])-55;
s:=s+ (d * puiss(b1,j));
j:=j-1;
end;
b1_b10:=s;
end;
function b10_b2(n,b2:integer):string;
var r:integer;
ch,c:string;
begin
ch:='';
repeat
r:=n mod b2;
n:= n div b2 ;
if r <10 then str(r,c)
else begin
r:=r+55;
c:=chr(r);
end;
ch:=c+ch;
until n=0;
b10_b2:=ch;
end;
begin
n:=b1_b10(n1);
res:=b10_b2(n,b2);
write('(',n1,')',b1,' = ','(',res,')',b2);
end;
begin
saisie(b1,b2,n1);
convertir(n1,b1,b2);
end.
program conversion;
uses wincrt;
var
n1,n2:string;
b1,b2:integer;
procedure saisie ( var b1,b2:integer; var n1:string);
var
test:boolean;
i,d,e:integer;
x:char;
begin
repeat
writeln('b1:');
readln(b1);
writeln('b2');
readln(b2);
until ( b1 in [2..16])and (b2 in[2..16]);
repeat
write('donnez n: ');
readln(n1);
i:=1;
test:=true;
if b1<=10 then
repeat
n1[i]:=upcase(n1[i]);
val(n1[i],d,e);
if e<>0 then test:=false
else
begin
if not(d in [0..b1-1] ) then
test:=false
else i:=i+1;
end;
until (test=false)or (i>length (n1))
else
repeat
n1[i]:=upcase(n1[i]);
x:=n1[i];
if x > chr(b1+55) then test:=false
else
i:=i+1;
until (test=false) or (i>length(n1));
until (test);
end;
function puiss(a,b:integer):integer;
var k,p:integer;
begin
p:=1;
for k:=1 to b do
p:= p*a;
puiss:=p;
end;
procedure convertir(n1:string;b1,b2:integer);
var n,s,d,e:integer;
res:string;
function b1_b10(n1:string):integer;
var i,j:integer;
begin
s:=0;
j:= length(n1)-1;
for i:= 1 to length(n1) do
begin
val(n1[i],d,e);
if e<>0 then d:=ord(n1[i])-55;
s:=s+ (d * puiss(b1,j));
j:=j-1;
end;
b1_b10:=s;
end;
function b10_b2(n,b2:integer):string;
var r:integer;
ch,c:string;
begin
ch:='';
repeat
r:=n mod b2;
n:= n div b2 ;
if r <10 then str(r,c)
else begin
r:=r+55;
c:=chr(r);
end;
ch:=c+ch;
until n=0;
b10_b2:=ch;
end;
begin
n:=b1_b10(n1);
res:=b10_b2(n,b2);
write('(',n1,')',b1,' = ','(',res,')',b2);
end;
begin
saisie(b1,b2,n1);
convertir(n1,b1,b2);
end.
Hello
tu vas donc convertir 49152 en base 2 (c'est un peu long, certes)
le résultat sera converti en hexa
ensuite, tu vas converir 16383 en octal
le résultat sera converti en binaire
ensuite, tu vérifies tout tes résultats avec la calculatrice windows (en mode Scientifique)
ou tu postes tes résultats dans cette conversation dans un délai de 24h.
tu vas donc convertir 49152 en base 2 (c'est un peu long, certes)
le résultat sera converti en hexa
ensuite, tu vas converir 16383 en octal
le résultat sera converti en binaire
ensuite, tu vérifies tout tes résultats avec la calculatrice windows (en mode Scientifique)
ou tu postes tes résultats dans cette conversation dans un délai de 24h.