Je fais une mission de devoirs en C et je rencontre un peu de problèmes.
Après avoir calculé deux valeurs, je dois être capable d'imprimer le plus haut des deux valeurs sans em> à l'aide de ses opérateurs logiques, des opérateurs relationnels ou des constructions de sélection. J'ai déjà utilisé des calculs qui déterminent la plus grande des deux valeurs, mais je ne sais pas si cela est très utile à l'avenir. p>
Je voudrais également clarifier que je n'imprime pas la valeur maximale, je suis plutôt censé imprimer l'option maximale. Par exemple, l'option 1 = 2000 et l'option 2 = 3000, je souhaite pouvoir imprimer "l'option 2 est la plus grande". P>
Je devrais aussi dire que suivre avec le reste de l'affectation, cette sélection n'est généralement faite que avec des opérations mathématiques + * -% / code> et pow () code> p >
6 Réponses :
Le plus grand des deux int code> types x code> et y code> est x x code> est z code> si x ^ z code> est 0 code> et de la même manière pour y code>. p>. p>
Maintenant, comment utilisez-vous cela pour produire le résultat souhaité?
@LightnessRacesinorbit: Honnêtement, la jeunesse d'aujourd'hui doit être cuillère ;-)
(x
@HEDEDHOG: C'est mieux?
Oui, nous ne sommes pas en mesure d'utiliser des opérateurs de comparaison (= <> etc.) ainsi que de & |
@BobtheBuilder: Vous pouvez refondrer et en termes de ^ et d'autres, mais vous savez quoi, je suis trop vieux pour cela. Êtes-vous sûr de ne pas utiliser
Eh bien, ce n'est pas la cuionnage autant que littéralement répondre à la question qui a été posée
& code>? Je comprendrais la justification de ne pas utiliser && code>.
Je voudrais utiliser la fonction Fmax . Il faut des doubles en tant qu'arguments. Vous devrez peut-être lancer vos chiffres en doubles. P>
L'idée est d'utiliser un bit de signer comme index pour la matrice.
signed char index1 = (option1value - option2value) >> 7; signed char index2 = (option2value - option1value) >> 7;
Option1Value - Option2Value code> est soumis à int code> débordement. Signé int code> Overflow est comportement non défini i> (UB).
@chux, tu veux dire "non signé INT"? Ou dans le cas où deux valeurs sont les deux min_int? Ensuite, l'auteur doit prendre longtemps.
Je viens de fournir l'idée, l'auteur doit choisir de bons types de données et etc.
le plus élevé de deux valeurs
Seulement fait avec des opérations mathématiques (+ * -% / et POW) P>Lorsque les valeurs sont à la fois> 0, recherchez les 2 quotients A / B, B / A. L'un des quotients sera 0 (en supposant que les types sont des nombres entiers) et l'autre 1 ou plus. (Ou les deux quotients sont 1 lorsque les valeurs sont les mêmes). P>
Effectuer P>
int a[2] = { value1, value2 }; int index = pow(a[1]/a[0], a[0]/a[1]); printf("%d\n", a[index]); // or "to print the maximum option" printf("%d\n", index);
sans tableaux car je comprends qu'ils ne sont pas autorisés. Seulement maths
printlarger (42,1) code> tentatives c [1 - 42]) code>.
C'est plus comme un problème mathématique: Avertissement 1: Ça ne marche pas lorsque O1 == O2 P> AVERTISSEMENT 2: Traitement de cette réponse ce problème comme problème mathématique.
Le système en C ne garantit pas la valeur d'un double numéro exact, mais elle tient une approximation.
Ainsi, comme l'a souligné Chux, il peut ne pas donner la bonne réponse pour les grands nombres. P> vous pouvez avoir
double a = x / | x | code> donner a Code> une valeur de 0,9999 code> in c, rendant int b = (int) a code> ayant une valeur de 0 p> p> p> p> p> p> p> P> P> P >
module code> peut être légèrement différent de | res | code> avec le gros res code> comme le carré pow (res, 2) code> n'est pas Le carré mathématique exact avec grand res code>. Dans ce cas et avec faible POW code>, le module (int) code> peut être désactivé par un, craquez-vous espéré pour la division. O2 - O1 CODE> est sujet à débordement.
Oui, ce qui ne devrait certainement pas être utilisé dans un programme, mais j'imagine que c'est une question sur une liste et que je suis professeur d'informatique, je pense que c'est la réponse attendue.
Vinicius de Novaes, qu'est-ce que vous obtenez lorsque o1 == o2 code>? Je reçois la division de 0 - une faute d'exception.
Chux, je l'obtiendrais aussi, mais comme la question n'a pas défini de règle pour l'affaire que O1 == O2, je n'avais pas pris la peine avec cela.
J'essaie de penser d'une manière de résoudre ce btw
En tant que mathématicien, offrir un codage qui utilise un modèle mathématique est compréhensible. En tant que professionnel de l'informatique, en supposant que cela soit moins vrai. Ce sont exactement les véritables limitations de codage qui méritent notre attention sur les détails. Parfois, ces petits problèmes tels que Overflow inattendu coûte cher. Bienvenue à cela.
Votre prudence sur l'utilisation d'un double code> a des lacunes. Il n'y a rien d'inexact sur un double code>. Il s'agit simplement d'un sous-ensemble des nombres réels distribués linéairement dans un espace exponentiel, cf. int code> qui est un sous-ensemble des nombres réels distribués linéairement.
@Bathsheba the double code> ATTENTION ne concerne pas le codage code> double code> comme vous avez bien décrit. C'est le Double Code> Math of POW (POW (RES, 2), 0.5) CODE> Pour atteindre FABS (RES) CODE> C'est le problème. Le code ici peut entraîner un résultat qui diffère de fabs (res) code> menant à un résultat incorrect.
@chux: Oui, c'est un bon point. Utilisation de RES / ROUNT (module) code> serait, je pense, corrigez-le.
@Bathsheba rond () code> aidera sauf lorsque l'ULP est de 0,5 (près du niveau d'erreur), il s'agit d'une pièce de monnaie.
@chux je vais devoir réfléchir à celui-là ;-)
Et je suppose que l'expression conditionnelle ternaire
?: Code> n'est pas autorisé non plus?Quelle est votre question? Y a-t-il un problème avec votre solution?
Quelle est exactement votre question? Vous prétendez que vous avez trouvé un moyen, alors que demandez-vous réellement? De plus, veuillez télécharger du code afin que nous puissions aider davantage
@Frontear c'est "avoir à pouvoir être capable". A été confus aussi ...
Cela ressemble à Xy-problème, vous savez. La partie de " calculer deux valeurs i>" doit impliquer le bon ordre.
J'ai trouvé un moyen d'imprimer la valeur maximale et non de l'option maximale que le deuxième paragraphe suggère. Quant à?: Je suppose que non.
Postez le code que vous avez essayé. Un exemple de reproductible minimal .
@Gox Comment inverser les chiffres dans un numéro comme codage
max (A, B) code>?