2017-06-23 1 views
1

Eh bien,construire un si statment en utilisant max et min

Ma première question ici.

Est-il possible de construire une instruction "If" en utilisant seulement les instructions "max" et "min"?

Le problème que j'ai est Est-ce que je dois comparer 2 nombres (A et B) et voir si B> 1.1 x A. Si cela se produit je prends B si non, je prends A.

Une idée?

+0

Oui, c'est simple. 'si B> 1,1 x A je choisis B sinon, je choisis A'. Bien sûr, il n'y a absolument aucun moyen de répondre à votre question, car nous ne savons pas si vous soudez des portes logiques ou si vous codez dans lolcat. – Will

+0

Bonjour, et bienvenue dans StackOverflow. Pouvez-vous s'il vous plaît développer votre question pour spécifier la langue dans laquelle vous travaillez, et ce que vous avez essayé jusqu'à présent comme décrit ici: https://stackoverflow.com/help/how-to-ask. Si, comme marqué, votre question est une question logique alors je pense qu'il appartient ici: https://math.stackexchange.com/. – Jamey

+1

Merci est un langage propiétaire donc une solution dans n'importe quelle langue peut fonctionner. – Eperezj

Répondre

0

Une instruction if, que ce soit dans la logique pure (invariant ordre) ou dans la logique procédurale, fonctionne sur booléennes déclarations seulement. Cela signifie vrai ou faux. Une fonction min ou max renvoie un nombre, pas une valeur true/false. Donc, la réponse courte à votre question est non, il n'est pas possible de construire une instruction if en utilisant les valeurs de retour max et min. Maintenant, dans les détails de votre question, vous allez jeter un peu plus de lumière sur ce que vous voulez. Ce qui prête à confusion, c'est la façon dont Max et Min entrent dans l'équation. B> 1.1 * A n'exige aucun traitement Max et Min, alors utilisez-vous les fonctions Max et Min pour arriver à B et à A? Si c'est le cas, il suffit de les traiter d'abord, puis de les brancher dans cette équation.

Et parce que les comparaisons "supérieur à" et "inférieur à" DO retournent les valeurs vraies/fausses, vous avez de la chance. Utilisez simplement cela dans votre "if" déclaration. Voici un pseudo-code.

max1 = 25 
max2 = 72 
min1 = 95 
min2 = 80 

A = Max(max1,max2) 
B = Min(min1,min2) 

O = NULL 

if B > 1.1 * A then 
    set O = B 
else 
    set O = A 
end if 

Lorsque la sortie d'une instruction if est une valeur, par opposition à une commande, comme vous semblez désirer, certaines langues utilisent l'opérateur de « elvis », ce qui rend les choses plus jolie. En l'utilisant, vous écrivez simplement:

O = B > 1.1 * A ? B : A 
+0

Merci à tous pour les réponses. Je soupçonnais que le problème n'a pas de solution mais toujours avez-vous un espoir. – Eperezj

+0

@Eperezj Si vous acceptez que la réponse n'a pas de solution précisément à cause de ce que j'ai indiqué ci-dessus, veuillez accepter ma réponse afin que les futurs lecteurs puissent être informés. – pwilcox

+0

Fait! pwilcox Merci encore – Eperezj

1

Si vos opérateurs logiques acceptent la valeur non booléenne, vous pouvez le faire comme suit:

n = Max(B - 1.1*A, 0) 
output = Max(B*(n && n), A)