Forum INFOMATH
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
Code promo Nike : -25% dès 50€ d’achats sur tout le site Nike
Voir le deal

Conversion d'un nombre d'une base B1 vers une base B2

Aller en bas

Conversion d'un nombre d'une base B1 vers une base B2 Empty Conversion d'un nombre d'une base B1 vers une base B2

Message par nejah Ven 3 Juin - 3:53

Voici le code en pascal du programme permettant de convertir un nombre de la base B1 vers la base B2:


Code:
program conversion;
uses wincrt;
var
ch_b1:string;
b1,b2:integer;
function verif(ch_b1:string;b1:integer):boolean;
var
ch:string[16];
begin
ch:='0123456789ABCDEF';
while (pos(ch_b1[1],copy(ch,1,b1))<>0) and (ch_b1<>'') do
delete(ch_b1,1,1);
verif:=ch_b1='';
end;
procedure saisir(var ch_b1:string;var b1,b2:integer);
begin
repeat
writeln('Donner la base b1');
readln(b1);
until b1 in [2..16];
repeat
writeln('Donner votre nombre de la base ',b1);
readln(ch_b1);
until verif(ch_b1,b1);
repeat
writeln('Donner la base b2');
readln(b2);
until b2 in [2..16];
end;
function puissance(x,y:integer):integer;
begin
if y=0 then
puissance:=1
else
puissance:=x*puissance(x,y-1);
end;
function conv_b1_10(ch_b1:string;b1:integer):integer;
var
n_10,n,e,i:integer;
begin
n_10:=0;
for i:=1 to length(ch_b1) do
begin
if ch_b1[i] in ['0'..'9'] then
val(ch_b1[i],n,e)
else
n:=ord(ch_b1[i])-55;
n_10:=n_10+n*puissance(b1,length(ch_b1)-i);
end;
conv_b1_10:=n_10;
end;
function conv_10_b2(nb_10,b2:integer):string;
var
ch2,ch_r:string;
r:integer;
begin
ch2:='';
repeat
r:=nb_10 mod b2;
if r in [0..9] then
str(r,ch_r)
else
ch_r:=chr(r+55);
ch2:=ch_r+ch2;
nb_10:=nb_10 div b2;
until nb_10=0;
conv_10_b2:=ch2;
end;

function conv_b1_b2(ch_b1:string;b1,b2:integer):string;
var
n_10:integer;
ch_b2:string;
begin
n_10:=conv_b1_10(ch_b1,b1);
ch_b2:=conv_10_b2(n_10,b2);
conv_b1_b2:=ch_b2;
end;

begin
saisir(ch_b1,b1,b2);
writeln('(',ch_b1,')',b1,'=(',conv_b1_b2(ch_b1,b1,b2),')',b2);
end.

nejah
Entier Naturel
Entier Naturel

Masculin
Nombre de messages : 21
Localisation : Tunisie
Réputation : 3
Points : 5155
Date d'inscription : 14/11/2010

Feuille de personnage
Capacité linguistique:
Conversion d'un nombre d'une base B1 vers une base B2 Left_bar_bleue1000/1000Conversion d'un nombre d'une base B1 vers une base B2 Empty_bar_bleue  (1000/1000)

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum