Récupérer min, max d'un tableau sans utiliser les fonctions PHP

Résolu/Fermé
Sébastien - Modifié par baladur13 le 20/06/2015 à 20:41
 Sébastien - 18 juin 2015 à 09:32
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

NHenry Messages postés 15000 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 septembre 2022 326
17 juin 2015 à 22:09
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
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.
0
NHenry Messages postés 15000 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 septembre 2022 326
17 juin 2015 à 23:02
As-tu essayé de faire l'execution à la main avec un feuille et un crayon et en suivant ton code à la lettre ?
0
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
0
NHenry Messages postés 15000 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 septembre 2022 326
17 juin 2015 à 23:30
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.
0
Oui, je compris mon erreur, je trouvé un solution. :)
Merci pour votre aide.
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 955
Modifié par jisisv le 18/06/2015 à 06:53
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)
0
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
0
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.
0
<?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.
0