Le plus petit entier non nul [Résolu]

Signaler
Messages postés
7
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
25 mars 2005
-
Messages postés
7
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
25 mars 2005
-
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;

Merci.

5 réponses

Messages postés
135
Date d'inscription
jeudi 14 août 2003
Statut
Membre
Dernière intervention
12 octobre 2006

result := MAXINT;
if a>0 then result := a;
if (b<result) and (b>0) then result := b;
if (c<result) and (c>0) then result := c;

qui renvoi maxint si ils sont tous <= 0(Certes, c'ets plutôt laid, mais qu'est-ce que c'est simple :) )

pour N entiers, ça va dependre de pas mal de chose, il faudrait plus de precisions
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
Hello,



Pourquoi ne pas utiliser directement la fonction MinIntValue de delphi :

Renvoie la moindre valeur signée d'un tableau d'entiers.



Unité



Math



Catégorie



routines statistiques



function MinIntValue(const Data: array of Integer): Integer;



Description



Appelez MinIntValue pour obtenir le plus petit entier du tableau Data.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Messages postés
7
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
25 mars 2005

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.

encore merci et à bientôt.
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
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.
Messages postés
7
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
25 mars 2005

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.