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 ? in \\\toef_var17)
}
## toutes les indications pour les fonctions
\matrix{
indicList_fonc=
wims(replace internal ? by ? 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>
}