PHP fonction MAX [Fermé]

Signaler
-
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
-
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

2 réponses

Messages postés
31606
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
6 mars 2021
3 301
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
983
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