Faire des calculs avec set.VARIABLE et setglobal.variable

Added by Benoit PIERRET over 4 years ago

Bonjour,

J'ai mis une bonne réponse dans la variable VISIBLE avec

setglobal.VISIBLE=

dans une question précédente(en fait la bonne réponse peut être 0 ou 2 ou 4.

Je veux poser une question dont la bonne réponse numérique est le contenu de VISIBLE

Idéalement, je pourrais écrire:

\AMCnumericChoices{\VISIBLE}

Mais cela ne fonctionne pas.

Voila ce que j'ai fait:

\begin{question}{c1-02}\bareme{default.REPONSE=1,formula=(REPONSE==VISIBLE ?1:0)}
Combien de carrés sont visibles sur la figure sélectionnée à la question 1
  \begin{reponseshoriz}[o]
    \bonne{0}\bareme{set.REPONSE=0}
    \mauvaise{1}      
    \mauvaise{2}\bareme{set.REPONSE=2}
    \mauvaise{3}      
    \mauvaise{4}\bareme{set.REPONSE=4}
  \end{reponseshoriz}
\end{question}

C'est un peu lourd et le corrigé est faux car la bonne réponse n'est pas 0. Par contre la notation est juste: j'ai 1 point si ma réponse correspond au contenu de VISIBLE
Autre approche qui ne fonctionne pas (ça aurait permis un corrigé juste)

\ifnumequal{\VISIBLE}{0}{\bonne}{\mauvaise}

Existe t il une meilleure approche qui me permet d'avoir un corrigé juste?


Replies (4)

RE: Faire des calculs avec set.VARIABLE et setglobal.variable - Added by Alexis Bienvenüe over 4 years ago

Existe t il une meilleure approche qui me permet d'avoir un corrigé juste?

Je n'en vois pas…
J'avais pensé à quelque chose comme ça, qui donne une note correcte mais ne corrige pas correctement :

\begin{question}{a-nb}    
  Choisissez un nombre le plus grand possible
  \begin{reponses}
    \mauvaise{0}\bareme{setglobal.CHOIX=0}
    \mauvaise{1}\bareme{setglobal.CHOIX=1}
    \mauvaise{2}\bareme{setglobal.CHOIX=2}
    \bonne{3}\bareme{setglobal.CHOIX=3}
  \end{reponses}
\end{question}

\begin{questionmultx}{b-carre}    
  Quel est son carré ?
  \bareme{MAX=1,formula=( intX == CHOIX*CHOIX ? 1 : 0)}
  \AMCnumericChoices{0}{digits=2,sign=false,scoring=false}
\end{questionmultx}

RE: Faire des calculs avec set.VARIABLE et setglobal.VARIABLE - Added by Benoit PIERRET over 4 years ago

Génial, je ne connaissais pas
  • intX (valeur brute entrée par l'étudiant)
  • intV (bonne valeur brute)

Je me suis mis à tester ça

\begin{question}{a-nb}    
  Choisissez un nombre le plus grand possible
  \begin{reponses}
    \mauvaise{0}\bareme{setglobal.CHOIX=0}
    \mauvaise{1}\bareme{setglobal.CHOIX=1}
    \mauvaise{2}\bareme{setglobal.CHOIX=2}
    \bonne{3}\bareme{setglobal.CHOIX=3}
  \end{reponses}
\end{question}

\begin{questionmultx}{b-carre}    
  Quel est son carré ?
  \bareme{MAX=1,setglobal.REPONSE=intX,formula=( intX == CHOIX*CHOIX ? 1 : 0)}
  \AMCnumericChoices{9}{digits=2,sign=false,scoring=false}
\end{questionmultx}

\begin{questionmultx}{c-double carre}    
  Quel est le double de la réponse à la question 2 ?
  \bareme{MAX=1,formula=( intX == 2*REPONSE ? 1 : 0)}
  \AMCnumericChoices{18}{digits=2,sign=false,scoring=false}
\end{questionmultx}

Malheureusement, la question 3 ne fonctionne pas: la réponse intX ne peut pas être mise dans une variable globale (ou je n'ai pas trouvé comment faire). La bonne réponse à la question 3 est 0 donc REPONSE vaut 0!

A noter: en mettant \AMCnumericChoices{9} au lieu de \AMCnumericChoices{0} à la question 2, on a un corrigé moins faux (c'est à dire juste si on a correctement répondu à la question 1).

RE: Faire des calculs avec set.VARIABLE et setglobal.VARIABLE - Added by Benoit PIERRET over 4 years ago

Il y a une faille dans le code donné par Alexis ci-dessus:
Si on coche plusieurs réponse à la question 1, on peut avoir la bonne réponse à la question 2 (à mon avis, c'est la dernière réponse qui est considérée).
Voila comment résoudre ce problème: stocker avec setglobal le nombre de réponse: NBC+NMC

\begin{question}{a-nb}\bareme{setglobal.nbRep=NBC+NMC}    
  Choisissez un nombre le plus grand possible
  \begin{reponses}
    \mauvaise{0}\bareme{setglobal.CHOIX=0}
    \mauvaise{1}\bareme{setglobal.CHOIX=1}
    \mauvaise{2}\bareme{setglobal.CHOIX=2}
    \bonne{3}\bareme{setglobal.CHOIX=3}
  \end{reponses}
\end{question}

\begin{questionmultx}{b-carre}    
  Quel est son carré ?
  \bareme{MAX=1,formula=( intX == CHOIX*CHOIX && nbRep==1 ? 1 : 0)}
  \AMCnumericChoices{9}{digits=2,sign=false,scoring=false}\bareme{setglobal.REP=intX}
\end{questionmultx}

Je n'ai par contre pas trouvé comment stocker la réponse de AMCnumericChoices(voir mon post précédent)

RE: Faire des calculs avec set.VARIABLE et setglobal.variable - Added by Benoit PIERRET over 4 years ago

Le code suivant ne fonctionne pas: il ne semble pas possible de récupérer intX(résultat de l'élève) pour la question suivnte.

\begin{questionmultx}{q01}\bareme{setglobal.POINT=intX}
Écrivez le nombre de points que vous voulez avoir à la question suivante
  \AMCnumericChoices{1}{digits=1,sign=false,
                 borderwidth=0pt,backgroundcol=white,scoring=false}    
\end{questionmultx}

\begin{questionmult}{q02}\bareme{formula=POINT}    
Cochez au moins un case ci-dessous pour avoir les points
  \begin{reponses}
    \bonne{Poitiers}
    \mauvaise{Sainte-Menehould}
    \bonne{Avignon}
  \end{reponses}
\end{questionmult}

Par contre celui-ci fonctionne:

\begin{questionmultx}{q01}\bareme{setglobal.POINT=2}
Vous allez avoir 2 points à la question suivante!
  \AMCnumericChoices{1}{digits=1,sign=false,
                 borderwidth=0pt,backgroundcol=white,scoring=false}    
\end{questionmultx}

\begin{questionmult}{q02}\bareme{formula=POINT}    
Cochez au moins un case ci-dessous pour avoir les points!
  \begin{reponses}
    \bonne{Poitiers}
    \mauvaise{Sainte-Menehould}
    \bonne{Avignon}
  \end{reponses}
\end{questionmult}

Attention aussi: intX retourne le résultat sans décimales. Il faut donc le diviser, par exemple par 10 pour 1 décimale.

(1-4/4)