Forum INFOMATH
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -28%
Précommande : Smartphone Google Pixel 8a 5G ...
Voir le deal
389 €

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

Aller en bas

nombre - 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 : 4965
Date d'inscription : 14/11/2010

Feuille de personnage
Capacité linguistique:
nombre - Conversion d'un nombre d'une base B1 vers une base B2 Left_bar_bleue1000/1000nombre - Conversion 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