Concernant la fonction Puissance() :
Toute fonction écrite dans Delphi dispose d'une variable prédéfine Result du même type que le résultat de la fonction. Elle peut être utilisée comme opérande et comme résultat. Elle sert aussi à garder le résultat final de la fonction.
Le boucle For ne fait rien si le pas final de la boucle est strictement supérieur au pas d'origine, ce n'est donc pas la peine de tester le cas 0 :
Function puissance(a,n : integer) : integer;
var i: integer;
begin
result:=1;
for i:=1 to n do result:=result*a;
end;
Concernant les conversion.
Rien à dire sur le principe mais tu pourrais optimiser le code, car pour chaque chiffre tu calcules la puissance de la base, ce n'est pas utile car d'un chiffre à l'autre il suffit de multiplier l'ancienne valeur de la base. Par exemple dans le cas de la procédure vers la base 10 :
procedure Passbaseato10(nbr_caractere,base_depart : integer);
Var cptr,Puiss : integer;
begin
nbrdix:=0;
Puiss:=1;
for cptr:=1 to nbr_caractere do
begin
nbrdix:=nbrdix+nbre[cptr]*puiss;
Puiss:=Puiss*Base_depart;
end;
End;
Ou vers la base n :
procedure pass10tobasen(nouvelle_base : integer;nbrdix : longint);
var ctr,quotient,nbrn,puiss : integer;
begin
nbrn:=0;
quotient:=nbrdix;
Puiss:=1;
while quotient>0 do
begin
nbrn:=nbrn+(quotient mod nouvelle_base)*Puiss;
quotient:=quotient div nouvelle_base;
Puiss:=Puiss*10
end;
writeln('Le nombre en base ',nouvelle_base,' est : ',nbrn);
end;
Nono.
P.S.: Pourquoi utilises-tu toujours des applications consoles ?
30 mai 2002 à 22:47
Concernant la fonction Puissance() :
Toute fonction écrite dans Delphi dispose d'une variable prédéfine Result du même type que le résultat de la fonction. Elle peut être utilisée comme opérande et comme résultat. Elle sert aussi à garder le résultat final de la fonction.
Le boucle For ne fait rien si le pas final de la boucle est strictement supérieur au pas d'origine, ce n'est donc pas la peine de tester le cas 0 :
Function puissance(a,n : integer) : integer;
var i: integer;
begin
result:=1;
for i:=1 to n do result:=result*a;
end;
Concernant les conversion.
Rien à dire sur le principe mais tu pourrais optimiser le code, car pour chaque chiffre tu calcules la puissance de la base, ce n'est pas utile car d'un chiffre à l'autre il suffit de multiplier l'ancienne valeur de la base. Par exemple dans le cas de la procédure vers la base 10 :
procedure Passbaseato10(nbr_caractere,base_depart : integer);
Var cptr,Puiss : integer;
begin
nbrdix:=0;
Puiss:=1;
for cptr:=1 to nbr_caractere do
begin
nbrdix:=nbrdix+nbre[cptr]*puiss;
Puiss:=Puiss*Base_depart;
end;
End;
Ou vers la base n :
procedure pass10tobasen(nouvelle_base : integer;nbrdix : longint);
var ctr,quotient,nbrn,puiss : integer;
begin
nbrn:=0;
quotient:=nbrdix;
Puiss:=1;
while quotient>0 do
begin
nbrn:=nbrn+(quotient mod nouvelle_base)*Puiss;
quotient:=quotient div nouvelle_base;
Puiss:=Puiss*10
end;
writeln('Le nombre en base ',nouvelle_base,' est : ',nbrn);
end;
Nono.
P.S.: Pourquoi utilises-tu toujours des applications consoles ?
30 mai 2002 à 20:06