Subversion Repositories wimsdev

Rev

Rev 11156 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

## identifiants de l'exercice: titre, auteur, format
\title{
\\\toef_var1
}
\author{
\\\toef_var2
}
\email{
\\\toef_var3
}
\language{
\\\toef_var20
}
\format{html}
\computeanswer{yes}
\precision{10000}

## type qcm de l'exo
\integer{
exo=
\\\toef_var4
}

## la liste des objets mathématiques
\matrix{
obsList=
wims(replace internal ? by ? in \\\toef_var5)
}
\integer{obsnb=wims(rowcnt \obsList)}

## la liste des proriétés éventuelles
\matrix{
propsList=
wims(replace internal ? by ? in \\\toef_var6)
}
\integer{propsnb=wims(rowcnt \propsList)-1}

## liste des bonnes réponses par objet
\matrix{
propsrepList=
wims(replace internal ? by ? in \\\toef_var7)
}

## nombre de possibilités à afficher
\integer{
ckchnb=
\\\toef_var8
}
\integer{
fixchnb=
\\\toef_var9
}
\integer{
borng=
\\\toef_var10
}
\integer{
bornd=
\\\toef_var11
}
\integer{
chnb=
\\\toef_var12
}

## la liste des fonctions
\matrix{
foncsList=
wims(replace internal ? by ? in \\\toef_var13)
}
\integer{foncsnb=wims(rowcnt \foncsList)}

## liste des bonnes réponses par objet
\matrix{
foncsrepList=
wims(replace internal ? by ? in \\\toef_var14)
}

## référence pour le type des fonctions
\text{
foncstypList=
\\\toef_var15
}

## couleurs de fond
\text{bg=lavender,lemonchiffon,azure}

## nombre de lignes pour l'affichage de 2 colonnes de la liste des propriétés
\integer{rowsnb=floor((\chnb+1)/2)}
\integer{extrarow=((\chnb+1)%2)}

## choix aléatoire d'un objet
\integer{objn=random(1..\obsnb)}
\text{obj=\obsList[\objn;]}
\text{obj=wims(char 2 to -2 of \obj)}

## choix aléatoire d'une fonction
\integer{foncn=random(1..\foncsnb)}
\text{fonc=wims(trim \foncsList[\foncn;])}
\text{fonc=wims(char 2 to -2 of \fonc)}

## la bonne réponse initiale pour les propriétés
\text{props=\propsrepList[\objn;]}

## la bonne solution pour la valeur de la fonction
\text{resu=wims(trim \foncsrepList[\objn;\foncn])}
\text{resu=wims(char 2 to -2 of \resu)}

\text{rep2=<span class="bold" style="color:darkcyan">Valeur trouvée:</span>}

## génération de la liste des propriétés à afficher
\text{pafnbs=shuffle(\propsnb)}
\text{pafnbs=wims(item 1 to \chnb of \pafnbs)}
## inutile de réordonner avec "text{pafnbs=wims(sort numeric item \pafnbs)}"
\integer{nbp=\propsnb+1}
\text{pafnbs=wims(append item \nbp to \pafnbs)}

\text{paf=}
\for{i in \pafnbs}{
\text{paf=wims(append line \propsList[\i;] to \paf)}
}
\matrix{paf=\paf}

\integer{chnbp=\chnb+1}
\text{propsorder=wims(values i for i=1 to \chnbp)}

## ce qu'il faudra choisir pour avoir juste
\text{brep=wims(listintersect \props and \pafnbs)}
\integer{brepnb=wims(itemcnt \brep)}

\if{\brepnb=0}{
\text{ansrep=\chnbp}}{
\text{ansrep=}
\for{i in \brep}{
\text{situ=position(\i,\pafnbs)}
\text{ansrep=wims(append item \situ to \ansrep)}
}
}
\text{ansrep=wims(sort numeric item \ansrep)}
\text{rep1=Les propriétés de \obj}

## numérotation des éléments des colonnes
\text{c1=wims(values i for i=1 to \rowsnb)}
\text{c2=wims(values \rowsnb+i for i=1 to \rowsnb)}

## énoncé saisi en ligne
\text{
enonceR=
\\\toef_var16
}

## toutes les indications pour les propriétés
\matrix{
indicList_obj=
wims(replace internal ? by &#63; in \\\toef_var17)
}

## toutes les indications pour les fonctions
\matrix{
indicList_fonc=
wims(replace internal ? by &#63; in \\\toef_var18)
}

## liste des types des fonctions
\text{
type2f=\\\toef_var20
}
\integer{tyn=1+\foncstypList[\foncn]}
\text{stepvar=reply  1, reply \tyn}
\nextstep{\stepvar}

## lorsqu'il s'agit d'une matrice
\if{\type2f[\foncn]=matrix}{
    \matrix{resu=wims(declosing \resu)}
   }

## détection de l'indication pour l'objet choisi
\text{com=wims(trim \indicList_obj[\objn;])}
\text{com=wims(char 4 to -2 of \com)}
\text{com=wims(trim \com)}
\integer{comN_1=wims(charcnt \com)}

## indication pour la fonction choisie
\text{temp_indic=wims(trim \indicList_fonc[\objn;\foncn])}
\text{temp_indic=wims(char 4 to -2 of \temp_indic)}
\text{temp_indic=wims(trim \temp_indic)}
\integer{comN_2=wims(charcnt \temp_indic)}

## ici on donne l'énoncé de l'exercice
\statement{
<div>\enonceR</div>

  <ul class="wims_nopuce">
    \for{k=1 to \rowsnb}{
    <li>
              \embed{reply 1,\c1[\k]}: \paf[\k;]
    </li>}
    \for{k=1 to \rowsnb}{
    <li>
      \embed{reply 1,\c2[\k]}: \paf[(\k+\rowsnb);]
    </li>
    }
    \if{\extrarow<>0}{
      <li>
              \embed{reply 1,\chnbp}: \paf[\chnbp;]
      </li>
    }
<div>
        \rep2
       \embed{reply \tyn}
</div>
}

## champ de soumission et analyse de la réponse
\reply{\rep1}{\ansrep;\propsorder}{type=\\\toef_var19}
\answer{\rep2}{\resu}{type=default}
\answer{\rep2}{\resu}{type=default}
\answer{\rep2}{\resu}{type=default}
\answer{\rep2}{\resu}{type=default}
\answer{\rep2}{\resu}{type=set}
\answer{\rep2}{\resu}{type=fset}
\answer{\rep2}{\resu}{type=vector}
\answer{\rep2}{\resu}{type=function}
\answer{\rep2}{\resu}{type=algexp}
\answer{\rep2}{\resu}{type=formal}
\answer{\rep2}{\resu}{type=matrix}


## indications éventuelles
\hint{
  <div class="oefhint">
  \if{\comN_1>1 and \comN_2>1}{
      <b>A propos des propriétés</b>. \com
      <hr />
      <b>A propos de la valeur à trouver</b>.
      \temp_indic
      }

  \if{\comN_1>1 and \comN_2=1}{
      <b>A propos des propriétés</b>. \com
      <hr />
      <b>A propos de la valeur à trouver</b>.
      <div class="wims_msg info">Désolé: il n'y a pas d'indication.</div>
      }

  \if{\comN_1=1 and \comN_2>1}{
      <b>A propos des propriétés</b>.
      <div class="wims_msg info">Désolé: il n'y a pas d'indication.</div>
      <hr />
      <b>A propos de la valeur à trouver</b>.
      \temp_indic
      }

  \if{\comN_1=1 and \comN_2=1}{
      <div class="wims_msg info">Désolé: il n'y a pas d'indication.</div>
      }
  </div>
}