Forums » Utilisation d'AMC (french) »
Faire des calculs avec set.VARIABLE et setglobal.variable
Added by Benoit PIERRET about 5 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 about 5 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 about 5 years ago
- 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 about 5 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 almost 5 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)