" ; echo " \n" ; echo " \n" ; echo "\n"; echo "\n" ; echo "$titre" ; echo "\n"; echo "\n"; echo "\n" ; $fint = explode(" ","red blue blue blue") ; echo "Calcul de moyennes \n" ; } ; # fin de fonction debutPageHtml ################################################################################################ function afficheNomsNotes($modaf) { global $nomElv, $notElv, $moyElv, $nbl, $mpl ; ################################################################################################ $ie = 1 ; echo "
\n\n" ; while ($ie<=$nbl) { echo "\n\n" ; if ($modaf==0) { echo " \n" ; $in = 1 ; while ($in<=$nN) { $n = $notElv[$ie][$in] ; echo "\n" ; $in++; } ; # fin de tant que } ; # fin de si sur modaf $m = $moyElv[$ie] ; $fm = sprintf("%6.2f",$m) ; echo "\n" ; echo "\n" ; $ie++ ; echo "" ; } ; # fin de tant que echo "
$nomElv[$ie] notes $n   moyenne   $fm

 

" ; } ; # fin de fonction afficheNomsNotes ################################################################################################ function tri_Alpha($nE,$nN) { ################################################################################################ global $nomElv, $notElv, $moyElv ; $ie = 1 ; while ($ie<=$nE-1) { $je = 1 + $ie ; while ($je<=$nE) { $m1 = $nomElv[$ie] ; $m2 = $nomElv[$je] ; if ($m1>$m2) { # permutations $nomElv[$ie] = $m2 ; $nomElv[$je] = $m1 ; $tmp = $moyElv[$ie] ; $moyElv[$ie] = $moyElv[$je] ; $moyElv[$je] = $tmp ; } ; # fin de tant il faut permuter $je++ ; } ; # fin de tant que sur $je $ie++ ; } ; # fin de tant que sur $ie } ; # fin de fonction tri_Alpha($nE,$nN) { ################################################################################################ function tri_Moyenne($nE,$nN) { ################################################################################################ global $nomElv, $notElv, $moyElv ; $ie = 1 ; while ($ie<=$nE-1) { $je = 1 + $ie ; while ($je<=$nE) { $m1 = $moyElv[$ie] ; $m2 = $moyElv[$je] ; if ($m1<$m2) { # permutations (ne pas mettre <= à cause des ex-aequo) $moyElv[$ie] = $m2 ; $moyElv[$je] = $m1 ; $tmp = $nomElv[$ie] ; $nomElv[$ie] = $nomElv[$je] ; $nomElv[$je] = $tmp ; } ; # fin de tant il faut permuter $je++ ; } ; # fin de tant que sur $je $ie++ ; } ; # fin de tant que sur $ie } ; # fin de fonction tri_Moyenne ################################################################################################ function affichages_et_FinPageHtml($nE,$nN) { ################################################################################################ echo "

Affichage historique des $nE élève(s) avec sans doute $nN note(s)

" ; afficheNomsNotes(0) ; echo "

Affichage par ordre alphabétique

" ; tri_Alpha($nE,$nN) ; afficheNomsNotes(1) ; echo "

Affichage par ordre de mérite

" ; tri_Moyenne($nE,$nN) ; afficheNomsNotes(1) ; # puis on termine la page Html echo "\n" ; echo "\n" ; } ; # fin de fonction affichages_et_FinPageHtml ################################################################################################ function saisie() { ################################################################################################ debutPageHtml(1," Programme Moyenne, partie 1 : saisie ") ; echo "
\n" ; echo "

Faites votre choix :

\n" ; echo " \n" ; echo "
\n" ; finPage() ; } ; # fin de fonction saisie ################################################################################################ function saisieForm() { ################################################################################################ debutPagehtml(2," Programme Moyenne, partie 2.1 : saisie sur formulaire " ) ; echo "

Saisie des valeurs par formulaire

\n" ; echo "
\n" ; echo " \n" ; echo " \n" ; echo " \n" ; echo "
\n" ; finPage() ; } ; # fin de fonction saisieForm ################################################################################################ function saisieFic() { global $nomfic, $nomfic_name ; ################################################################################################ debutPageHtml(3," Programme Moyenne, partie 2 : calcul sur fichier " ) ; echo "
\n" ; echo " \n" ; echo " \n" ; echo " \n" ; echo " Indiquez votre fichier \n" ; echo " \n" ; echo " \n" ; echo "
\n" ; echo " \n" ; echo "
 \n" ;
     echo "     Format du fichier : \n" ;
     echo "        nom prénom étoile note1 note2... \n" ;
     echo "     Exemple : \n" ;
     echo "        Durand H. * 9 14 12 \n" ;
     echo "        Dupon P.  * 18 15 11 \n" ;
     echo "        Aymar J.  * 11 11 11 \n" ;
     echo "     
\n" ; echo " \n" ; echo " \n" ; } ; # fin de fonction saisieFich ################################################################################################ function calculs($valr) { global $nomElv, $notElv, $moyElv, $nbl, $mpl ; ################################################################################################ $valr .= chr(10) ; # pour forcer la dernière ligne $le = strlen($valr) ; # longueur de la chaine $nbl = 0 ; # nombre d'élèves $mot = "" ; # mot courant $ic = 0 ; # indice du caractère courant while ($ic<$le) { $lec = substr($valr,$ic,1) ; $cec = ord($lec) ; if ($cec==42) { # 42 est le code ascii de l'étoile $nbl++ ; $nomElv[$nbl] = $mot ; $lec = "" ; $mot = "" ; } elseif ($cec==10) { $lignot = $mot ; $tlignot = explode(" ",$lignot) ; $cnt = count($tlignot) ; $im = 0 ; $nn = 0 ; while ($im<$cnt) { $motn = $tlignot[$im] ; if (strlen($motn)>0) { $nn++ ; $notElv[$nbl][$nn] = $motn ; $moyElv[$nbl] += $motn ; } ; # fin de si strlen($motn)>0 $im++ ; } ; # fin de tant que $im<$cn if ($nbl==1) { $mpl = $nn ; } ; # fin de si $nbl==1 if ($mpl>0) { $moyElv[$nbl] /= $mpl ; $mot = "" ; } ; } elseif ($cec==13) { $lec = "" ; } ; # fin de si on voit un retour chariot $mot .= $lec ; $ic++ ; } ; # fin tant que } ; # fin proc function calculs ################################################################################################ function gereCalculs($lemode,$lavar) { ################################################################################################ global $nomElv, $notElv, $moyElv, $nbl, $mpl, $nomfic, $nomfic_name ; if ($lemode==1) { $nbl=1 ; $valeurs = $lavar ; debutPageHtml(1+$lemode," Programme Moyenne, partie 2.2 : calcul sur formulaire " ) ; } elseif ($lemode==2) { debutPageHtml(3," Programme Moyenne, partie 2 : calcul sur fichier " ) ; $nomfic = $_GET["nomfic"] ; echo "Moyenne des valeurs du fichier $nomfic
" ; #echo "Désolé, ce serveur n'accepte pas le transfert (upload) de fichiers.\n" ; $fsrv = $_FILES['nomfic']['tmp_name'] ; echo ' (fichier '.$fsrv.' sur serveur) ' ; $fh = fopen($fsrv,"r") ; $valeurs = "" ; $nbl = 0 ; while (!feof($fh) and (nbl<100)) { $nbl++ ; $lig = fgets($fh,4096) ; $valeurs .= $lig ; } ; # fin tant que non fin de fichier fclose($fh) ; } ; # fin de si sur lemode if ($nbl>0) { calculs($valeurs) ; affichages_et_FinPageHtml($nbl,$mpl) ; } ; # fin de si } ; # fin de fonction prepareCalculs ################################################################################################ function pbMode() { echo "

Erreur sur le paramètre \"mode\"

\n"; finPage() ; } ; # fin de fonction finPage ################################################################################################ function finPage() { echo "\n"; echo "\n" ; } ; # fin de fonction finPage ################################################################################################ ################################### programme principal if (isset($_GET["mode"])) { $mode = $_GET["mode"] ; } elseif (isset($_POST["mode"])) { $mode = $_POST["mode"] ; } ; # fin de si if ($mode=="") { saisie() ; } elseif ($mode=="saisieFormulaire") { saisieForm() ; } elseif ($mode=="calculFormulaire") { $valeur = $_GET["valeur"] ; gereCalculs(1,$valeur) ; } elseif ($mode=="saisieFichier") { saisieFic() ; } elseif ($mode=="calculFichier") { gereCalculs(2,"") ; } else { pbMode() ; } ; ?>