projet de convertion entre les bases

Voir le sujet précédent Voir le sujet suivant Aller en bas

projet de convertion entre les bases

Message  bouhmid le Mar 24 Fév - 22:29

program Projet_Conversion;
uses wincrt;
var
B1,B2:integer;
ch:string;

{*******************Saisie Base 1*******************}
procedure Saisie_Base1(var B1:integer);
begin
repeat
writeln('Tapez Le Premiére Base :' );
readln(B1)
until (B1 in [2..16]);
end;
{******************Saisie Base 2*********************}
procedure Saisie_Base2(var B2:integer);
begin
repeat
writeln('Tapez Le Deuxiéme Base :' );
readln(B2)
until (B2 in [2..16]);
end;
{*******************Saisie Nombre********************}
procedure Saisie_Nombre(var ch:string; B1:integer);
var
i:integer;
t:boolean;
n,a,e:integer;
begin
if B1 in [2..15] then
begin
repeat
write('Tapez votre Nombre Qui Vous Voulez Convertir :');
readln(ch);
n:=length(ch);
i:=0;
repeat
i:=i+1;
val(ch[i],a,e);
if a<B1
then
begin
n:=n-1;
t:=true;
end
else
t:=false
until ( t=false) or (n=0);
until(t=true);
end
else
begin

repeat
write('Tapez votre Nombre Qui Vous Voulez Convertir :');
readln(ch);
n:=length(ch);
i:=0;
repeat
i:=i+1;
if (ch[i] in ['0'..'9']) or ( upcase (ch[i]) in ['A'..'F'] )
then
begin
n:=n-1;
t:=true;
end
else
t:=false
until ( t=false) or (n=0);
until(t=true);
end;
end;
{*******************Puissance**************************}
function puissance(x,b:integer):longint;
var
j,p:integer;
begin
p:=1;
for j:=1 to x do
begin
p:=p*b;
end;
puissance:=p;
end;
{*******************Convers_10*************************}
function conversion_10(ch:string;B1:integer):longint;
var
i,e,n:integer;
dec:longint;
begin
dec:=0;
for i:= length(ch) downto 1 do
begin
if (upcase(ch[i])) in ['A'..'F']
then N:= ord (upcase(ch[i]))-55
else val(ch[i],N,e);
dec:=dec+N*puissance(length(ch)-i,B1);
end;
conversion_10:=dec;
end;

{*******************Convers_2**************************}
function conver_B2(N_10:longint;B2:integer):string;
var
ch,ch_r:string;
r:integer;
begin
ch:='';
repeat
r:=N_10 mod B2;
if R>=10 then ch_r:=upcase(chr(55+r))
else str(r,ch_r);
ch:=ch_r+ch;
N_10:=N_10 div B2;
until(N_10=0);
conver_B2:=ch;
end;


{******************* Conversion************************}
Function conversion(ch:string;B1,B2:integer):string;
var
N_10:longint;
ch_B2:string;
begin
N_10:=conversion_10(ch,B1);
ch_B2:=conver_B2(N_10,B2);
Conversion:=ch_B2;
end;



{*********************Programe Principale**************}
BEGIN
writeln('*********************************************************************');
writeln('* Menu De Conversion *');
writeln('*********************************************************************');
Saisie_Base1(B1);
writeln('Votre Base Est Sauvegarder Avec Succées....................');
Saisie_Base2(B2);
writeln('Votre Base Est Sauvegarder Avec Succées....................');
Saisie_Nombre(ch,B1);
writeln('Votre Nombre Est Sauvegarder Avec Succées..................');
writeln('(',ch,')',B1,'=(',conversion(ch,B1,B2),')',B2);
END.
avatar
bouhmid

Messages : 15
Date d'inscription : 15/02/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: projet de convertion entre les bases

Message  Ilyes KHAILI le Jeu 26 Fév - 23:33

ce programme ne controle pas la saisie des nombres dans certaines bases comme il faut...
il faut verifier !!!!!!!!!!!!!!!!!!!!!!!!!!!
Very Happy Very Happy Very Happy

Ilyes KHAILI

Messages : 24
Date d'inscription : 13/11/2008
Age : 27

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: projet de convertion entre les bases

Message  bouhmid le Ven 27 Fév - 0:10

ken tilhit fi rouhek 5ir
avatar
bouhmid

Messages : 15
Date d'inscription : 15/02/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: projet de convertion entre les bases

Message  Hanafi le Sam 28 Fév - 0:19

Merci, Ahmed, pour le partage. Le programme est très bien organisé, juste un petit truc pour contrôler la saisie de nombre à convertir. Je vous propose mon variante, mais je sais que vous pouvez trouver mieux que ça Exclamation Bonne chance pour la semaine bloquée. drunken

repeat
test:=true;
write('Donner un nombre à convertir ');
readln(ch);
for i:=1 to length(ch) do
if b1<=10 then
begin
str(b1-1,chf);
if not(ch[i] in ['0'..chf[1]]) then
test:=false;
end
else
begin
chf:=chr(65 (b1-10));
if not(upcase(ch[i]) in ['0'..'9','A'..chf[1]]) then
test:=false;
end;
until test;
avatar
Hanafi

Messages : 106
Date d'inscription : 25/10/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: projet de convertion entre les bases

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

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