Convertion entre les bases

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

Convertion entre les bases

Message  Ilyes KHAILI le Mar 24 Fév - 21:54

bonjour Cool
voici un programme du devoir de bac de l'année précédente :

uses wincrt;
type
fichdec=file of longint;
nbr=record
dec:integer;
bin:integer;
oct:integer;
hex:string;
end;
fichnbr=file of nbr;
var
n,m:integer;
fd:fichdec;
fn:fichnbr;
{**************************************}
procedure creer(var f:fichdec;var n:integer);
var
i,x:longint;
begin
repeat
write('Donner n = ');readln(n);
until n in[6..99];
assign(f,'c:\Bac2008\nombres.dat');
rewrite(f);
for i:=1 to n do
begin
repeat
write('Donner un entier = ');readln(x);
until x<32000;
write(f,x);
end;
close(f);
end;
{**************************************}
function puiss(n:integer):integer;
var
i,p:integer;
begin
p:=1;
for i:=1 to n-1 do
p:=p*10;
puiss:=p;
end;
{**************************************}
function conv10_2(d:longint):integer;
var
i,b:integer;
begin
i:=0;
b:=0;
repeat
i:=i+1;
b:=b+ puiss(i)*(d mod 2 );
d:=d div 2;
until d=0;
conv10_2:=b;
end;
{**************************************}
function conv10_8(d:longint):integer;
var
i,o:integer;
begin
i:=0;
o:=0;
repeat
i:=i+1;
o:=o+ puiss(i)*(d mod 8 );
d:=d div 8;
until d=0;
conv10_8:=o;
end;
{**************************************}
function conv10_16(d:longint):string;
var
h:string;
function nombre(x:integer):string;
var
c:string[1];
begin
if x in[0..9] then
begin
str(x,c);
nombre:=c;
end
else
nombre:=chr(65+x mod 10);
end;
begin
h:='';
repeat
h:=nombre(d mod 16)+h;
d:=d div 16;
until d=0;
conv10_16:=h;
end;
{**************************************}
procedure enregistrer(var fd:fichdec;var fn:fichnbr;n:integer);
var
i:integer;
d:longint;
nb:nbr;
begin
reset(fd);
assign(fn,'c:\Bac2008\nbr_conv.dat');
rewrite(fn);
for i:=1 to n do
begin
read(fd,d);
writeln;
writeln(d,' en base 10 = ',conv10_2(d),' en base 2 = ',conv10_8(d),' en base 8 = ',conv10_16(d),' en base16');
with nb do
begin
dec:=d;
bin:=conv10_2(d);
oct:=conv10_8(d);
hex:=conv10_16(d);
end;
write(fn,nb);
end;
close(fd);
close(fn);
end;
{**************************************}
begin
creer(fd,n);
enregistrer(fd,fn,n);
end.

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: Convertion entre les bases

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

Merci pour le partage ! Mais essayez de l'exécuter avec les grandes valeurs de x (30000 par exemple). Bonne chance pour la semaine bloquée.
avatar
Hanafi

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

Voir le profil de l'utilisateur

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