Exercice

Résolu
Bonjour,

Je bloque à l'exercice qui suis:

2. Les cotes obtenues par un élève aux deux premiers contrôles (Cote1, Cote2) sont obtenues au clavier. On demande d'écrire un DA qui affiche à l'écran le message
-« échec » si les deux cotes sont inférieures à 10 ;
- « remédiation » si une seule des deux cotes est inférieure à 10 ;
- « réussite » dans les autres cas.

Voici mon code:
#include <stdio.h>
#include <stdlib.h>

void main(void)

{
int cot1, cot2;

printf("Veuillez entrer les deux cotes separees par un espace : \n");
scanf("%d %d", &cot1, &cot2);

if (cot1 && cot2 <=10) {
 printf("Echec \n");
}else{
 if(cot1 && cot2 >=10){
  printf("Reussite \n");
 }else{
  printf("Remediation \n");}}

 system("pause");

}

Lorsque que j'inscris "10" dans une des deux côtes, j'obtiens le résultat "Echec" alors que je devrais normalement recevoir "Remediation". Je reçois pourtant "Rémédiation" lorsque les deux cotes sont égales à 10. ai-je commis une erreur?

Je vous remercie à l'avance;

EDIT: Ajout de la coloration syntaxique.

3 réponses

  1. Bonjour.
    2 points:
    -On te demande de tester une valeur inférieure et tu utilises des inférieurs ou égal.
    -
    cot1 && cot2 <=10
    ce code veut dire que tu testes si cot1 est vrai et si cot2 est inférieur ou égal à 10.

    Voir cette page http://progdupeu.pl/#1-conditions-et-booleens au moins les chapitres sur les booléens et les opérateurs binaires

    Penser aux balises de coloration syntaxique: bouton <>, préciser le langage :<code csharp>.
    Quand la solution est trouvée, mettre la discussion Résolue.
    0
    1. Contributeur
      Bonjour,

      Effectivement, comme dit par Whismeril, si tu veux faire si a et b supérieur à 10, alors il faut mettre : if (a>10 && b>10)

      Remarque : plutôt que :
      else {
           if {
      ...
      

      Tu devrais utiliser :
      else if {
      ...
      

      La bon prototype de main() sans argument est : int main(void)
      et il ne faut pas oublier : return 0; en fin de main().

      Cdlt,
      0
      1. Bonsoir! Je vous remercie pour votre aide, vous m'avez permis de résoudre l'exercice!
        Deux choses aussi:

        -au sujet de la coloration syntaxique, je n'ai aucune idée de comment l'appliquer sur le forum, de plus, je travaille sur une vieille version de visual studio qui ne prend pas en charge la coloration (juste pour les préprocesseur et les types des variables)

        -au sujet de "return 0" et de "int main", je n'ai pas le droit de les utiliser dans mon cursus scolaire. Je ne peux me plier qu'à ce que j'ai écris dans ce code.. Je suis bien conscient que ce que vous dites est tout à fait juste car je me suis documenté auparavant mais je n'ai pas la raison exact de ce changement. Si vous pouviez m'expliquer la nuance, ça serait top!

        Bien à vous.
        0
        1. Whoops! Compris pour la coloration syntaxique, je n'avais pas lu ce qui était écrit en dessous!
          0
        2. Merci de signaler le sujet résolu en cliquant sur le lien dédié sur le titre de la discussion
          0
        3. Contributeur
          Si vous pouviez m'expliquer la nuance, ça serait top!
          Il n'y a pas de nuance. void main(void) n'est pas conforme à la norme.
          La norme spécifie que le main() doit renvoyer 0 lorsque le programme s'est déroulé correctement. Cela signifie simplement que ton cursus ne respecte pas la norme ISO. Et je sens que ça ne s'arrêtera pas au main ;-).
          0
        4. @fiddyBonsoir
          moi je rajouterais ceci le renvoi de 0 est correct mais, la formule exacte est
           return( EXIT_SUCCESS ) 

          à bientôt
          0
        5. Contributeur
          EXIT_SUCCESS = 0 systématiquement...
          Par contre pas besoin de parenthèses :-)
          0