12
fév
5

Les conversions entre les bases en Pascal

Programmation en pascal

Dans ce premier article, je vais mettre tous les fonctions et/ou procédures des différentes manière de conversion entre les bases
Les bases sont multiples et, généralement, on utilise le même principe pour effectuer la conversion entre eux.

La base la plus conne est celle qu’on utilise dans notre vie quotidienne: le Décimal; et c’est les nombres composés de 1 jusqu’à 9…


Conversion de la base 10 vers une base b donnée

Enoncé:

Ecrire un programme qui convertit un entier n≥0 vers une base b

Solution:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function conv10_b (n,b:integer):string;
var r:integer;
	ch:string;
begin
ch:='';
repeat
	r:=n mod b;
	if (r<=9) 
	then ch:=chr(ord('0')+r)+ch
	else ch:=chr(ord('A')+r-10)+ch;
	n:=n div b;
until (n=0);
conv10_b:=ch;
end.

Fonction conversion

program conversion10_b;
uses wincrt;
var n,b:integer;
 
function conv10_b (n,b:integer):string;
var r:integer;
	ch:string;
begin
ch:='';
repeat
	r:=n mod b;
	if (r<=9) 
	then ch:=chr(ord('0')+r)+ch
	else ch:=chr(ord('A')+r-10)+ch;
	n:=n div b;
until (n=0);
conv10_b:=ch;
end;
 
begin
write('Donner n : ');
readln (n);
writeln('Vers qu''elle base voulez-vous convertir ',n,'? ');
readln(b);
writeln(n,' en base ',b,' = ',conv10_b(n,b));
writeln('Copyleft, http://tunila.me');
end.

Programme complet

Conversion d’une base b donnée vers LA base 10

Enoncé:

Ecrire une fonction qui convertit un entier d’une base b vers la base 10

Solution
1
2
3
4
5
6
7
8
9
10
11
12
13
function convb_10 (ch:string;b:integer):integer;
var s,i,e,nb:integer;
begin
s:=0;
for i:=1 to length(ch) do
begin
 if ch[i] in ['0'..'9']
  then val(ch[i],nb,e)
  else nb:= ord(ch[i])- ord('A') +10;
 s:=s+nb*puissance(b,length(ch)-i);
end;
convb_10:=s;
end;

Fonction conversion.

1
2
3
4
5
6
7
8
9
10
function puissance (a,p:integer):integer;
var f,i:integer;
begin
 f:=1;
 for i:=1 to p do
 begin
  f:=f*a;
 end;
 puissance:=f;
end;

Fonction puissance!

program conversionb_10;
uses wincrt;
var b:integer;
    ch:string;
 
function puissance (a,p:integer):integer;
var f,i:integer;
begin
 f:=1;
 for i:=1 to p do
 begin
  f:=f*a;
 end;
 puissance:=f;
end;
 
function convb_10 (ch:string;b:integer):integer;
var s,i,e,nb:integer;
begin
s:=0;
for i:=1 to length(ch) do
begin
 if ch[i] in ['0'..'9']
  then val(ch[i],nb,e)
  else nb:= ord(ch[i])- ord('A') +10;
 s:=s+nb*puissance(b,length(ch)-i);
end;
convb_10:=s;
end;
 
begin
write('Donner n : ');
readln (ch);
writeln('Qu''elle est la base du nombre que vous venez de donner (',ch,') ? ');
readln(b);
writeln(ch,' en base ',b,' = ',convb_10(ch,b),' en base 10!');
writeln('Copyleft, http://tunila.me');
end.

Programme complet.

Vous recherchez un compilateur pascal? Télécharger Turbo Pascal Compiler 1.5 pour Windows en français:

  Turbo Pascal 1.5 fr (4,1 MiB, 302 hits)

Cet article vous a plu?
Abonnez-vous au flux RSS et vous aurez tous les nouveaux articles délivrés pour vous!
5 Comments:
  1. jozzy-online 1 mar, 2010

    BON DEPART

  2. Serge-GUENAMAN 24 avr, 2010

    Moi je vous propose d’utiliser un programme déjà écrit en turbo pascal. Vous n’avez qu’à télécharger le logiciel vous permettant de convertir en toute base. Il est très pratique, vous allez aimer. Vous y trouverez aussi  » le calendrier grégorien complet » ,des programmes pour matrices.

    http://guenaman.afrikblog.com/archives/mes_programmes_informatiques/index.html

  3. Omar_Joe 3 juin, 2010

    Merci Beaucoup Beaucoup Beaucoup Beaucoup Beaucoup !!!!!!

  4. Serge-GUENAMAN 12 déc, 2010

    Oh de rien. C’est plutot un honneur pour moi, merci aussi à toi

  5. Serge-GUENAMAN 3 mar, 2012

    Mon blog enregistre à longueur de journée toutes les personnes qui le visite à partir de cet espace. Je vous demande seulement, après visite, de publier des commentaires me permettant d’améliorer éventuellement mes programmes.

Post your comment




Get Adobe Flash playerPlugin by wpburn.com wordpress themes
Celadon theme by the Themes Boutique