0
votes

Problème avec l'utilisation de plusieurs opérateurs relationnels en C

Je suis nouveau à la programmation, mais j'ai cherché ce sujet avant de demander et ne peut toujours pas comprendre ce que mon programme fait mal.

J'ai ceci: p>

int i;
do
{
    i = get_int("Enter positive integer between 1-10: \n");
}
while(1>i && i<10)


5 commentaires

1> i -> i> 1 .. mais vous voulez toute cette condition annulée. Quelque chose comme tandis que (i <1 || i> 10)


ça l'a fait, merci. "||" signifie "ou", non? Pourquoi serait-il plus applicable lorsque l'entier doit répondre aux deux critères?


@merzy Vous avez besoin ou de sorte que si l'état est satisfait (soit moins de 0 ou supérieur à 10, vous voulez faire boucle), la boucle continue de fonctionner. Si vous êtes à l'aise d'utiliser et que vous auriez pu utiliser cela aussi à l'aide de l'opérateur de négation avec elle. Vérifiez ma réponse ci-dessous.


Merzy Edge Case Question: Avec l'invite "Entrez un entier positif compris entre 1-10: \ N" , souhaitez-vous une entrée de "1" pour boucler ou quitter le boucle?


@merzy, l'entier n'a pas à atteindre les deux critères présentés par Eugene. Il doit rencontrer aucun des critères pour quitter la boucle. Répondre au moins un des critères devrait conserver la boucle.


5 Réponses :


1
votes

Vous voulez probablement que la boucle exécute la boucle tant que l'utilisateur entrait un nombre compris entre 1 et 10. Votre état dans la boucle tandis que la boucle n'est pas correcte. Il devrait être le suivant - XXX

Toutefois, si vous souhaitez casser la boucle dès que l'utilisateur entrait n'importe quel numéro dans la plage 1 à 10 , alors vous devrait utiliser les éléments suivants - xxx


3 commentaires

devrait être ! (i> 1 && i <10)


@ Ôrel en fait, le premier est correct. Vérifier mon édition


Pour moi, vous devez demander à nouveau si le numéro n'est pas dans la plage, tandis que i n'est pas valide que vous restez dans la boucle



0
votes

Votre état de boucle est incorrect. Vous auriez dû utiliser logique ou strong> au lieu de logique et strong>.

Ceci a fonctionné pour moi. P>

  do
  {
    i= get_int ("Enter positive integer between 1-10: \n");

  } while (i<1 || i>10);


5 commentaires

Cela aurait pu être fait avec logique et aussi. En outre, votre première phrase n'a pas beaucoup de sens ..


Fait un sens pour moi. Vous connaissez la différence entre et faites ... pendant que j'espère ...


Puisque vous utilisez do ... tandis que ... Cela signifie-t-il que la condition aurait été différente lorsque vous utilisez juste pendant () boucle? La raison d'utiliser le do-tout est simplement parce que je n'ai pas de valeur initiale et doit l'obtenir de l'utilisateur avant de vérifier la condition.


@Abhishek Gotcha, reformulé.Merci


maintenant c'est plus clair. Aussi, notez que logique et aurait également pu être utilisé à l'aide de l'opérateur non



1
votes

Je ne peux pas le faire reconnaître que cela doit suivre les deux opérateurs.
Pourquoi serait-il plus applicable lorsque l'entier doit répondre aux deux critères? P>

} while(i < 1 || i > 10);

0 commentaires

0
votes

Vous avez été confondu ( Syntaxe Erreur code>) à l'intérieur du texte tandis que expression code> (2 erreurs leur, la logique n'est pas correcte et une erreur de syntnatx avec 1 ) - voir les correctifs en ligne:

int i = 0;  /*its better if you initialize the i here*/
do
{
    i= get_int ("Enter positive integer between 1-10: \n");
}
while((i > 1) && (i < 10));


0 commentaires

0
votes

Je veux demander à l'utilisateur un entier positif entre un et dix.

Je pense que vous voulez un entier dans la gamme avec 1 et 10 Inclusive.

Quand comment va chercher une telle condition d'un entier positif valide?

Il aura lieu ce qui suit manière xxx

de sorte que la boucle doit poursuivre ses itérations pendant que cette condition n'est pas vraie. Donc, dans la condition de la boucle, vous devriez écrire une négation de la condition ci-dessus xxx

si pour retirer les parenthèses, la condition ressemblera à xxx


0 commentaires