Page 1 sur 1

Fonction pour calculer le rang des élèves

Posté : 17 déc. 2014, 23:17
par CamillePHP
Bonjour,

Je débute en PHP, et je doit écrire un script PHP qui demande à l'utilisateur de saisir la moyenne de 10 étudiants (notes stockés dans un tableau) ce que j'ai fait mais je dois ajouter une fonction qui permettrait d'afficher le rang de chaque étudiant (le nombre de cases qui contiennent un nombre strictement supérieur).
Comment puis-je écrire cette fonction ? Avec un foreach, un if ?
J'ai du mal à trouver une solution.

Merci d'avance à ceux qui pourront m'éclairer !

Re: Fonction pour calculer le rang des élèves

Posté : 18 déc. 2014, 02:14
par Nestecha
Pas bien compris ce que tu dois afficher.

Quelque chose comme : 4 étudiants ont une note strictement supérieure à 14 par exemple ? Ou bien un classement des moyennes avec donc 1. 19,9 - 2. 18,2 etc ?

Quoi qu'il en soit, tu devras boucler à travers un tableau contenant chaque valeur. Appelons le $aStudentsNotes.

Tu peux donc utiliser un foreach, c'est le plus simple.
foreach ($aStudentsNotes as $iNote) {
 // ton code ici
}
Maintenant en gros tu veux 'marquer' les notes, pour dire 'telle note est au dessus de X > je la garde, telle note est en dessous de X > je l'ignore'.

Pour ca tu vas utiliser une condition donc, un if.
foreach ($aStudentsNotes as $iNote) {
$iNoteToExceed = 14; // disons que la note qu'on veut depasser est 14 
if ($iNote > $iNoteToExceed) {
// code pour marquer
}
}
Donc là pour marquer t'as plein de façons, tu peux mettre ces notes dans un tableau, tu peux utiliser une variable que tu définies a zéro pour l'incrementer ensuite. Tu n'auras plus ensuite qu'à afficher le résultat !

Re: Fonction pour calculer le rang des élèves

Posté : 18 déc. 2014, 09:58
par sirakawa
Il suffit de trier le ableau avec rsort et d'employer array_search (qui rend 0 pour le premier....)
Mais il est probable que le prof veut une boucle

Re: Fonction pour calculer le rang des élèves

Posté : 18 déc. 2014, 18:15
par CamillePHP
Je pense que je me suis mal expliquée.
Je rentre disons la moyenne de 10 élèves.
Eleve 1 = 10
Eleve 2 = 15
Eleve 3 = 18
Eleve 4 = 9
Eleve 5 = 11
Eleve 6 = 20
Eleve 7 = 8
Eleve 8 = 17
Eleve 9 = 14
Eleve 10 = 13

Et j'ai besoin d'écrire une fonction qui va alors me permettre de classer les élève de 1 à 10. D'afficher leur position.
Donc
Eleve 1 = 10 Rang : 8
Eleve 2 = 15 Rang : 4
Eleve 3 = 18 Rang : 2
Eleve 4 = 9 Rang : 9
Eleve 5 = 11 Rang : 7
Eleve 6 = 20 Rang : 1
Eleve 7 = 8 Rang : 10
Eleve 8 = 17 Rang : 3
Eleve 9 = 14 Rang : 5
Eleve 10 = 13 Rang : 6.

J'ai pensé à :
function Rangeleve($case, $tab, $Nbr){
$rang = 1;
        for($i=0;$i<$Nbr;$i++){
                if ($tab[$i]>$tab[$case]){
                        $rang = $rang + 1;
                }
        }
        return $rang;
}
 

Je ne sais pas si c'est une bonne solution.

Re: Fonction pour calculer le rang des élèves

Posté : 18 déc. 2014, 18:43
par ecumastor
Bonjour,

As-tu pensé à la fonction asort(), qui trie les tableaux ?
Exemple :

Code : Tout sélectionner

$n[1]=15; $n[2]=10; $n[3]=8; $n[4]=18; $n[5]=4; asort($n); foreach($n as $item => $valeur)echo "Eleve $item a pour moyenne ".$valeur."<br>";
Ceci classe les élèves par moyenne selon le tableau.

Re: Fonction pour calculer le rang des élèves

Posté : 21 déc. 2014, 14:38
par CamillePHP
Je ne connaissais pas cette fonction !
Merci pour votre aide