PHP fonction MAX

Fermé
maxime89 - Modifié par jordane45 le 24/10/2016 à 15:14
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 25 oct. 2016 à 09:44
Bonjour,

Je doit réaliser un petit programme PHP qui demande a l'utilisateur de rentrer 10 nombres et le programme doit afficher le plus grand. Pour la fonction MAX j'ai lu qu'il fallais saisir les valeurs sauf que dans mon cas c'est l'utilisateur du programme qui doit rentrer les valeurs.

Pour le moment j'ai réussi a faire une boucle mais impossible d'afficher la valeur maximale:

<?php
include ("lireClavier.php");
$nombre_de_lignes = 1;
$nb=1;

while ($nombre_de_lignes <= 10){
    $nombre=readline("entrez un nombre $nb: ");
    $nombre_de_lignes++; // $nombre_de_lignes = $nombre_de_lignes + 1
    $nb++;
}

echo max ($nombre);


 


?>

EDIT : Ajout des balises de code

A voir également:

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
24 oct. 2016 à 15:29
Bonjour,

La fonction php MAX s'applique sur un ARRAY
https://www.php.net/manual/fr/function.max.php

Il faut donc que tu stockes les valeurs saisies par ton utilisateur dans un array.
Tu peux aussi, par précaution, forcer leur type en nombre (via FLOAT ou intval )

Un truc du genre :
//Affichage des erreurs PHP
error_reporting(E_ALL);

require_once "lireClavier.php";


// Tableau de sorti 
$arrNombres = array();

// Lit les commandes de l'utilisateur
for ($i=0; $i < 10; $i++) {
        $line = readline("entrez un nombre : ");
        $arrNombres[] = intval($line);
}

echo "<br><br>la valeur max est :";
echo MAX($arrNombres);

1
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
25 oct. 2016 à 09:44
Bonjour,

Pour compléter ce que dit Jordane (toujours pertinente), je voudrais quand même pointer du doigt une erreur de conception de ton code, indépendamment de l'utilisation de max() : à chaque itération de la boucle, tu écrases $nombre en y mettant la nouvelle valeur. Tu perds donc toute information passée.

Une autre solution serait d'effectuer la comparaison à chaque itération, et de garder la plus grande valeur en mémoire, en faisant, dans la boucle :
$valeurMax = max($valeurMax, $nombre);

En termes de temps de calcul ce sera relativement équivalent (en O(n)), par contre la consommation mémoire sera moindre pour un grand nombre d'itérations. Inconvénient, si tu veux faire d'autres calculs sur l'ensemble des nombres, tu ne les as plus.

Xavier
0