Test conditionnel

Vous lisez 3 fils de discussion
  • Auteur
    Messages
    • #6403
      Noor Dover
      Participant
      Up
      0
      Down

      Bonjour,
      pour l’exercice suivant, j’essaie de comprendre pourquoi j’obtiens le feedback quand je donne une mauvaise réponse au [1] mais que je ne l’obtiens pas quand je mets un nombre proche de la bonne réponse au [2].
      L’opérateur <> a t-il un fonctionnement particulier ?
      Merci.

      Exercice_OEF

      \title{Population d'une ville}
      \autor{Noor,DOVER}
      \format{html}
      \computeanswer{no}
      
      \integer{annee0=randint(1970..2010)}
      \integer{nbrAnnees=randint(5..9)}
      \integer{population0=randint(10000..100000)}
      \real{taux=randint(21..39)/10}
      \real{CM=1+\taux/100}
      \text{TR1=<tr><th>Année</th><td>\annee0</td>}
      \text{TR2=<tr><th>Population</th><td>\population0</td>}
      \text{listeAnnees=\annee0}
      \text{listePopulations=\population0}
      \for{ i = 1 to \nbrAnnees }{ 
           \integer{annee=\annee0+\i}
           \integer{population=\population0*\CM^\i}
           \text{ listeAnnees=\listeAnnees,\annee}
           \text{ listePopulations=\listePopulations,\population}
           \text{ TR1= \TR1<td>\annee</td> }
           \text{ TR2= \TR2<td>\population</td> }
      }
      \integer{derniereAnnee = \listeAnnees[\nbrAnnees+1]}
      \integer{dernierePopulation = \listePopulations[\nbrAnnees+1]}
      \integer{anneeSuivante=\derniereAnnee+1}
      \integer{populationSuivante=\dernierePopulation*\CM}
      \integer{dureeX=randint(7..13)}
      \integer{anneeX=\derniereAnnee+\dureeX}
      \integer{populationX=\dernierePopulation*\CM^\dureeX}
      \text{TR1=\TR1<td>\anneeSuivante</td><td>\anneeX</td></tr>}
      
      \statement{
      Le tableau ci-dessous donne l'évolution de la population d'une ville.
          <table class="wimscenter wimsborder">
              \TR1
              \TR2<td>\embed{r1, 4}</td><td>\embed{r2, 4}</td></tr>
          </table>
      Compléter le tableau.
      }
      
      \answer{Population en \anneeSuivante : }{\populationSuivante}{type=numexp}{weight=5}
      \answer{Population en \anneeX : }{\populationX}{type=numexp}{weight=5}
      \feedback{1=1}{
          Feedback systématique<br />
      }
      \feedback{(\reply1<\populationSuivante) or (\reply1>\populationSuivante)}{
          Feedback quand la 1ère réponse est fausse<br />   
      }
      \feedback{ \reply2 <> \populationX }{
          Feedback quand la 2ème réponse est fausse<br />   
      }
    • #6404
      Noor Dover
      Participant
      Up
      0
      Down

      Je précise ma question !

      Pourquoi le test suivant ne fonctionne pas pour tester la différence des deux variables (quand elles contiennent deux valeurs entières proches l’une de l’autre)

      \feedback{ \reply2 <> \populationX }

      alors que cela fonctionne (ou semble fonctionner d’après mes tests) si je remplace par cela :

      \feedback{(\reply2<\populationX) or (\reply2>\populationX)}

      • Cette réponse a été modifiée le il y a 4 mois et 1 semaine par Noor Dover.
    • #6406
      byache
      Participant
      Up
      0
      Down

      Il y a aussi != qui je crois est synonyme de <>.
      Est-ce que vous l’avez essayé ?
      Quand on a une réponse de type real, il faut éviter de tester l’égalité et préférer des choses du genre abs(\reply1 - \bonne_reponse) < 10^(-3), mais apparemment là ce n’est pas le problème…

      • Cette réponse a été modifiée le il y a 4 mois par bernadette.
    • #6407
      bernadette
      Maître des clés
      Up
      0
      Down

      Tu fais analyser la réponse avec un numexp, donc si je me souviens bien, on teste ici que les entiers sont égaux.

      Par contre, avec feedback, un test numérique est fait et comme tous les nombres
      sont grands, il est fort possible qu’à la précision relative implicite, le test soit correct (je ne sais plus comment sont gérés les < et les > dans ce cas !)

      Pour être sûr d’avoir le même résultat que l’analyse par le type de réponse, le mieux est d’utiliser la variable sc_reply1, … qui vaut 1 ou 0 selon que la réponse est considérée comme bonne ou pas (avec des 0.5 dans le cas de mauvaise précision, regarder la doc technique dans les cas particuliers).

      Sinon, la suggestion de Paul est bien aussi si tu veux décider de la précision avec laquelle tu veux avoir le feedback (mais cela pourra être différent de l’analyse par le type de réponse). Mais si je comprends bien l’exo, la réponse demandée est un entier ??

      Bernadette

      • Cette réponse a été modifiée le il y a 4 mois et 1 semaine par bernadette.
      • Cette réponse a été modifiée le il y a 4 mois et 1 semaine par bernadette.
Vous lisez 3 fils de discussion
  • Vous devez être connecté pour répondre à ce sujet.