Code php que je ne comprend pas
Fermé
lolipop2701
-
17 déc. 2019 à 00:28
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 17 déc. 2019 à 09:47
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 17 déc. 2019 à 09:47
A voir également:
- Code php que je ne comprend pas
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
2 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
17 déc. 2019 à 09:07
17 déc. 2019 à 09:07
Bonjour,
En gros, il s'agit de compter le nombre de dizaines de mètres descendus.
D'ailleurs en passant, ce code est faux est provoquera une erreur sur le dernier élément du tableau, parce que $montagnes[$i+1] ne sera pas défini. Il manque un -1 dans la condition d'arrêt du for().
Voilà, pose des questions s'il y a un point précis qui te paraît encore flou.
Xavier
En gros, il s'agit de compter le nombre de dizaines de mètres descendus.
<?php // La fonction prend en entrée le profil montagneux, dans l'exemple c'est [0, 50, 40, 100, 70, 90, 0] // Elle renvoie $pierre, qui compte le nombre de pierres lancées (égal au nombre de dizaines de mètres descendus) function sanglierErymanthe($montagnes) { $pierres=0; // Le total des pierres lancées, qui commence à 0 for ($i=0;$i<count($montagnes);$i++) { // On parcourt le tableau... if ($montagnes[$i]>$montagnes[$i+1]) { // en repérant les descentes $metres=$montagnes[$i]-$montagnes[$i+1]; //on compte les mètres descendus $metres=($metres/10)+1; //on compte le nombre de dizaines de mètres (+1 si Hercule lance une pierre tout en haut puis tout en bas) $pierres+=$metres; // Et on les ajoute au total } } return $pierres; // Pour finir, on renvoie le total calculé. } ?>
D'ailleurs en passant, ce code est faux est provoquera une erreur sur le dernier élément du tableau, parce que $montagnes[$i+1] ne sera pas défini. Il manque un -1 dans la condition d'arrêt du for().
Voilà, pose des questions s'il y a un point précis qui te paraît encore flou.
Xavier
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
Modifié le 17 déc. 2019 à 09:47
Modifié le 17 déc. 2019 à 09:47
Bonjour,
Pour commencer, merci d'utilisedr les balises de code pour poster ton code sur le forum
explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite, le code que tu nous montres contient une erreur...
Si on active l'affichage des erreurs php on constate qu'on obtient une erreur d'offset.
Normal, vu que vous faites du $i+1 sur l'array montage.... et donc, lorsque vous êtes sur le dernier élément, et bien... y'a plus rien derrière.
Il faut donc modifier la boucle pour aller jusqu'au dernier élément moins un !
Maintenant... concernant ta question...
que ne comprends tu pas exactement ?
Quelle instruction PHP ne te semble pas claire ?
car il suffit de le tester pour voir comment ça fonctionne
Pour commencer, merci d'utilisedr les balises de code pour poster ton code sur le forum
explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite, le code que tu nous montres contient une erreur...
Si on active l'affichage des erreurs php on constate qu'on obtient une erreur d'offset.
Normal, vu que vous faites du $i+1 sur l'array montage.... et donc, lorsque vous êtes sur le dernier élément, et bien... y'a plus rien derrière.
Il faut donc modifier la boucle pour aller jusqu'au dernier élément moins un !
count($montagnes)-1
Maintenant... concernant ta question...
que ne comprends tu pas exactement ?
Quelle instruction PHP ne te semble pas claire ?
car il suffit de le tester pour voir comment ça fonctionne
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); function sanglierErymanthe($montagnes) { $pierres=0; //on boucle sur chaque hauteur (moins 1 ) for ($i=0;$i<count($montagnes)-1;$i++) { //on vérifie si on est en montée ou descente. (positif quand on descend) if ($montagnes[$i]>$montagnes[$i+1]) { $metres=$montagnes[$i]-$montagnes[$i+1]; //on calcul la différence de mettre entre les deux hauteurs $metres=($metres/10)+1; //on jete une pierre a chaque 10m $pierres+=$metres;//on cumul le nombre de pierre jetées. } } return $pierres;// on retourne le total de pierres jetées } $datas = array(0, 50, 40, 100, 70, 90, 0); $result = sanglierErymanthe($datas); print_r($result);