projet de convertion entre les bases
3 participants
Page 1 sur 1
projet de convertion entre les bases
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.
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.
bouhmid- Messages : 15
Date d'inscription : 15/02/2009
Re: projet de convertion entre les bases
ce programme ne controle pas la saisie des nombres dans certaines bases comme il faut...
il faut verifier !!!!!!!!!!!!!!!!!!!!!!!!!!!
il faut verifier !!!!!!!!!!!!!!!!!!!!!!!!!!!
Ilyes KHAILI- Messages : 24
Date d'inscription : 13/11/2008
Age : 34
Re: projet de convertion entre les bases
ken tilhit fi rouhek 5ir
bouhmid- Messages : 15
Date d'inscription : 15/02/2009
Re: projet de convertion entre les bases
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 Bonne chance pour la semaine bloquée.
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;
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;
Hanafi- Messages : 106
Date d'inscription : 25/10/2008
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|