Fonction pour calculer le rang des élèves

Petit nouveau ! | 3 Messages

17 déc. 2014, 23:17

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 !

Nestecha
Invité n'ayant pas de compte PHPfrance

18 déc. 2014, 02:14

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 !

Mammouth du PHP | 2278 Messages

18 déc. 2014, 09:58

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
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 3 Messages

18 déc. 2014, 18:15

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.

Eléphanteau du PHP | 37 Messages

18 déc. 2014, 18:43

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.
-- Ecumastor

Petit nouveau ! | 3 Messages

21 déc. 2014, 14:38

Je ne connaissais pas cette fonction !
Merci pour votre aide