seast
Messages postés7Date d'inscriptionsamedi 5 juillet 2003StatutMembreDernière intervention25 mars 2005
-
23 mars 2005 à 14:40
seast
Messages postés7Date d'inscriptionsamedi 5 juillet 2003StatutMembreDernière intervention25 mars 2005
-
25 mars 2005 à 12:31
Bonjour,
voici la fonction qui me permet de trouver le plus petit entier non nul parmi 3 possibilités.
Y a-t-il plus simple ? ou plus rapide ?
Si je desire passer à n entiers, vaudrait-il mieux trier un tableau et tester les plus petites valeurs ? une autre idée ?
function MiniNonNul(A,B,C: Integer): Integer;
begin
if Min(A,Min(B,C)) = 0 then
begin
if A = 0 then
begin
if Min(B,C) = 0 then
begin
if B = 0 then
begin
if C = 0 then Result := 0 else Result := C;
end
else Result := B;
end
else Result := Min(B,C);
end
else if B = 0 then
begin
if C = 0 then Result := A else Result := Min(A,C);
end
else Result := Min(A,B);
end
else Result := Min(A,Min(B,C));
end;
seast
Messages postés7Date d'inscriptionsamedi 5 juillet 2003StatutMembreDernière intervention25 mars 2005 23 mars 2005 à 18:15
Merci à tous les deux !
> neko : ta solution marche parfaitement et a le mérite d'être simple. Tu avais compris que seuls les entiers positifs m'interessaient dans ce pb.
>jmp77 : ta proposition renvoie le plus petit entier y compris 0 s'il est présent, et moi je veux le plus petit mais supérieur à 0.
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 24 mars 2005 à 21:55
Euh, je comprends pas tout là !
Seast, si tu veux une fonction qui te renvoie le plus petit entier non nul, alors la fonction de neko ne marche pas !!
Si tu essayes avec les valeurs a -2, b -3, et c = -4, tu obtiens : Result MAXINT 2147483647
Pour moi, le plus petit entier non nul est c=-4 !!
La fonction correcte serait plutot :
function MinNonNul( const a,b,c : integer ) : integer;
begin
result := MAXINT ;
if (a<result) and (a<>0) then result := a;
if (b<result) and (b<>0) then result := b;
if (c<result) and (c<>0) then result := c;
end ;
Cordialement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
seast
Messages postés7Date d'inscriptionsamedi 5 juillet 2003StatutMembreDernière intervention25 mars 2005 25 mars 2005 à 12:31
Bonjour,
tu as raison WhiteHippo, ta fonction renvoie le plus petit entier non nul pour n'importe quels entiers contrairement à celle de neko. J'ai accepté sa réponse car elle correspondait à ce que j'attendais, à savoir le plus petit entier non nul dans l'intervalle des entiers positifs, ce que je n'avais pas précisé dans ma question il est vrai.
Merci.