!!!! fichier des questions de l'exercice 4
!!!! lu par var.init

!!!!!!if $mode=4

nx1=!randint 1,$[$nX/2]
nx2=!randint $[($nX+1)/2],$nX 
x1=!item $nx1 of $X
x2=!item $nx2 of $X
min=!item 2 of $Y
max=!item -2 of $Y
!!! choix alatoire des valeurs
!!! val1 defini apres calcul de la mediane question 1
val2=!randint $min, $max
val3=!randint $min, $max

!!! indicateurs des sries

!!! sries des questions 1 et 2
quantiles=
positions=
!for k=1 to 2
cumul=0
indic=
serie=!line $(nx$k)  of $data
tot=!item -1 of $serie
effQ=$[0.25*$tot],$[0.5*$tot],$[0.75*$tot],$tot
q1=!exec pari ceil(0.25*$tot)
q3=!exec pari ceil(0.75*$tot)
!!!!! si tot = 2n+1, pos Me = n+1
me = $[0.5*($tot+1)]
!if . isin $me
me=$[$me+0.5],$[$me-0.5]
!endif
cnt=1
eff=!item 1 of $effQ
meQ=0
!for i= 1 to $nY   
    el = !item  $i of $serie
    cumul=$[$cumul+$el] 
!!! traitement particulier pour la mdiane, k = 1 et k=2
     !if $cnt=2 and  $cumul=$eff
          new=!item $i of $Y
          new2=!item $[$i+1] of $Y
          new=$[0.5*($new+$new2)]
          meQ=$k
          indic=!append item $new to $indic
          !advance cnt
          eff=!item  $cnt of $effQ
      !else
          !if $cumul >= $eff
                 new=!item $i of $Y
!!!! correction : meQ=1 seulement pour k=1 et cnt=2
                 !!!BUG !!meQ=1
                 !if $cnt=2
                      meQ=$k
                 !endif
                 indic=!append item $new to $indic
                 !advance cnt
                 !if $cnt > 3
                      !break
                 !else
                       eff=!item  $cnt of $effQ
                 !endif
           !endif
    !endif
!!! Cas 1ere serie (k=1) juste aprs dtection mdiane (cnt pass  3)
!!!! dfinir val1 et repb pour  quest1 ; comparer val1 et new (cd Me) 
    !if $meQ=1 
!!!! valeurs encadrant la mdiane ; val1 choisie enter elles
          prec=!item $[$i-1] of $Y
          succ=!item $[$i+1] of $Y
          mitot=!item 2 of $effQ
          val1=!randint $prec,$succ
          solMe=$prec,$succ
           !if $val1 > $new 
                repb = fausse
           !else                
               !if $val1=$prec
!!!!! au moins tot/2 geq  Me + eff de la val prec (geq 2 par construction)
                    repb=vraie
               !else
!!!!! cas prec < val1 <= Me ; geq val1 <=> geq Me    
                     !if . isin $new
!!!! dans ce cas Me tombe entre deux valeurs et seulement tot/2 sont geq me
                         repb=fausse
                     !else 
!!!!! Me val de la srie , check si eff. cumul.  par le haut > n+1 (o tot=2n+1 ou 2n)
                          nb=$[$el+$tot-$cumul]
                          solMe=!append item $nb to $solMe
                          !if $nb > $[$mitot+1]
                               repb=vraie
                          !else
                               repb=fausse
                         !endif
                     !endif
               !endif
           !endif
       reponses=$new,$repb,$solMe
       meQ=0
      !endif
!next i
quantiles=!append line $indic to $quantiles
positions=!append line $tot,$q1,$q3,$me to $positions

!next k

!!! srie de la question 3
!!! (cumul par colonnes, des lignes de nx1  nx2)

cumul=0
tot=0
indic=
serie=!column -1  of $data
!for j=$nx1 to $nx2
    t = !item  $j of $serie
    tot=$[$tot + $t]
!next j
effQ=$[0.25*$tot],$[0.5*$tot],$[0.75*$tot],$tot
!!!! positions des quartiles et mdiane
q1=!exec pari ceil(0.25*$tot)
q3=!exec pari ceil(0.75*$tot)
me = $[0.5*($tot+1)]
!if . isin $me
me=$[$me+0.5],$[$me-0.5]
!endif
cnt=1
eff=!item $cnt of $effQ
!for i= 1 to $nY   
     serie=!column $i  of $data
     n=0
     !for j=$nx1 to $nx2
         t = !item  $j of $serie
         n=$[$n + $t]
     !next j 
     cumul=$[$cumul+$n]
     nlist=!append item $n to $nlist
!!! cas particulier  si eff pair et Me tombe entre deux valeurs
     !if $cnt=2 and  $cumul=$eff
          new=!item $i of $Y
          new2=!item $[$i+1] of $Y
          new=$[0.5*($new+$new2)]
          indic=!append item $new to $indic
          !advance cnt
          eff=!item  $cnt of $effQ
     !else
           !if $cumul >= $eff
               new=!item $i of $Y
               indic=!append item $new to $indic
               !advance cnt
               !if $cnt > 3
                    !break
               !else
                     eff=!item  $cnt of $effQ
               !endif
            !endif
      !endif
!next i
quantiles=!append line $indic to $quantiles
positions=!append line $tot,$q1,$q3,$me to $positions

!!! finir le calcul des effectifs de la 3eme serie (nlist)
!!! cf. break ds qu'on a trouv la pos de Q3 ; stopp au dernier i
!for p = $[$i+1] to $nY
     serie=!column $p  of $data
     n=0
     !for j=$nx1 to $nx2
         t = !item  $j of $serie
         n=$[$n + $t]
     !next j 
     nlist=!append item $n to $nlist
!next p

!!!! nonc des questions
pos=!line 1 of $positions
me=!item 4 of $pos
questions=<br/> <b>a)</b>  Quelle est la $nomY mdiane pour la srie des $pop dont le $nomX vaut $x1 ? <br/> <b>b)</b>  Parmi ces $pop, est-il vrai que plus de $me d'entre eux ont une $nomY suprieure ou gale  $val1 ?
questions=!append line On s'intresse aux valeurs de la $nomY pour les $pop dont le $nomX vaut $x2. <br/> <b>a)</b>  Quel est le premier quartile de cette srie ? <br/><b>b)</b>  Peut-on affirmer que  moins de 25% des $pop ayant un $nomX gal  $x2 ont une $nomY  infrieure ou gale  $val2 ? to $questions
questions=!append line  On s'intresse aux valeurs de la $nomY pour  tous les $pop dont le $nomX est compris entre $x1 et $x2. <br/><b>a)</b>  Quels sont la mdiane et les quartiles de cette srie ? <br/> <b>b)</b>  Peut-on affirmer qu'au moins 75% de ces $pop ont une $nomY infrieure ou gale  $val3 ? to $questions

nbsteps=3

!!! les Rponses, dans l'ordre des questions


!!!! reponses  la question 1 dj calcules  la vole plus haut
 
!!! rponses  la question 2
indic=!line 2 of $quantiles
repa=!item 1 of $indic
!if $val2 < $repa
     repb=vraie
!else
     repb=fausse
!endif
reponses = !append line $repa,$repb to  $reponses
!!! rponses  la question 3
indic=!line 3 of $quantiles
q3=!item 3 of $indic
!if $q3<=$val3
repb=vraie
!else
repb=fausse
!endif
reponses = !append line $indic,$repb to  $reponses
reponses = !append line $nlist to  $reponses



!!!!!endif
!!!!!!!!
