cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 2006
-
30 mai 2002 à 22:47
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 2006
-
30 mai 2002 à 22:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 30 mai 2002 à 22:47
J'ai deux petites remarques :
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 ?
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 30 mai 2002 à 20:06
Pourquoi ne pas pousser jusqu'à des conversions en hexadécimal, pour l'utile et pour le fun ?
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