Récupérer min, max d'un tableau sans utiliser les fonctions PHP [Résolu/Fermé]

Signaler
-
 Sébastien -
Bonjour,
Je besoin créer un petit script PHP, voici le script que je le veux:
j'ai un tableau (array), dans mon tableau j'ai 20 nombres différent, je veux avoir le numéro minimum et numéro maximum, sans utiliser les fonctions proposer par PHP par ex. max().

voici mon code mais ne marche pas:

<
?php
$tableau = array(5, 7, 2, 10, 1000, 4, 1, 8, 18, 32);

for($i = 0; $i <= 10; $i++){
 if($tableau[$i] > $tableau[$i+1])
  $max = $tableau[$i];
}

for($i = 10; $i >= 0; $i--){
 if($tableau[$i] < $tableau[$i-1])
  $min = $tableau[$i];
}

echo 'Le minimum : ' . $min.'<br/>';
echo 'Le maximum : ' . $max.'<br/>';
?>


Je besoin faire une devoir, pour ça je pas droit de l'utiliser les fonctions. Merci

EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.

3 réponses

Messages postés
14769
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 février 2021
277
Ajoutes des traces avec des "echo" pour voir les valeurs.

Mais je pense que si tu fais le test "sur papier" en respectant à la lettre ton code, tu trouveras rapidement ton erreur.
1
Merci

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

CCM 65492 internautes nous ont dit merci ce mois-ci

Bonjour, merci pour votre réponse, rapide.
Je bien cherché, mais je pas trouvé. Si vous avez un solution, aidez moi s'il vous plait. Merci encore.
Messages postés
14769
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 février 2021
277
As-tu essayé de faire l'execution à la main avec un feuille et un crayon et en suivant ton code à la lettre ?
Oui j'ai tout essayé, mais sans résultat, mais je pense que je dois trouver moi même. Je vais l'essayer encore. Merci beaucoup
Messages postés
14769
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 février 2021
277
C'est que tu ne suis pas ton code à la lettre, regardes tes conditions pour les assignation des min et des max.
C'est un problème de logique.

Si max = 5
et dans ton tableau tu as 4 entrées : 2 10 5 8
Valeur de max sera 8 en sortie, car 5<8.
Oui, je compris mon erreur, je trouvé un solution. :)
Merci pour votre aide.
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
928
Ceci devrait fonctionner:
johand@osiris:~/src/CCM$ cat minmax.php
#! /usr/bin/php
<?php

function myMin(&$anArray)
{
 $min = PHP_INT_MAX;
 foreach($anArray as $current)
        {
            if ($current < $min)
                {
                    $min = $current;
                }
        }
 return $min;
}

function myMax(&$anArray)
{
 $max = -PHP_INT_MAX ;
    # should be
    #    $max = PHP_INT_MIN ;
 foreach($anArray as $current)
        {
            if ($current > $max)
                {
                    $max = $current;
                }
        }
    return $max;
}
$test = array(5, 7, 2, 10, 1000, 4, 1, 8, 18, 32);
printf("min is %d\n", myMin($test));
printf("max is %d\n", myMax($test));

?>

Et le résultat:
johand@osiris:~/src/CCM$ ./minmax.php
min is 1
max is 1000

Gates gave ^W sold you the windows.
GNU gave us the whole house.(Alexandrin)
Bonjour, merci beaucoup, pour votre réponse, mais, le problème que je besoin un code qui n'utilise pas foreach ou "PHP_INT_MAX", je besoin un code qui utilise un boucle for et if.
Je dois faire mon devoir.
Merci
Bonjour, merci beaucoup, pour vos aides.
Voici le solution que je trouvé, je pris le code "jisisv" et je changé le code, voici:
<?php
$test = array(5, 7, 2, 10, 1000, 4, 1, 8, 18, 32);

 $min = $test[0];
 for($i=0; $i < 10; $i++){
  if ($test[$i] < $min){
   $min = $test[$i];
  }
 }

 $max = $test[0];
 for($i=0; $i < 10; $i++){
  if ($test[$i] > $max){
   $max = $test[$i];
  }
 }
 echo $min.'<br/>';
 echo $max;
?>


Le résultat, marche très bien, mais je pense que $min = $test[0]; et $max = $test[0]; marche mais, c'est pas bien ça "$test[0]".
A votre avis, est ce que c'est juste le code.
Merci

EDIT: Ajout de la coloration syntaxique.
<?php
$test = array(5, 7, 2, 10, 1000, 4, 1, 8, 18, 32);

 $min = $test[0];
 $max = $test[0];
 for($i=0; $i < 10; $i++){
  if ($test[$i] < $min){
   $min = $test[$i];
  }
  
  if ($test[$i] > $max){
   $max = $test[$i];
  }
 }
 
 echo $min.'<br/>';
 echo $max;
?>


EDIT: Ajout de la coloration syntaxique.