IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Probleme Maximum intervalle.


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Probleme Maximum intervalle.
    Bonjour à tous
    alors voila, je viens car j'ai un petit problème avec mon code php.
    Je dois rechercher des valeurs maximales, mais dans plusieurs intervalles prédéfinit. Sauf que au lieu de me trouver le maximum, il me trouve une égalité. J'ai surement fait une gaffe quelque part mais je ne vois pas ou Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    while($i<$l-1) // Tant qu'on est pas passer par tous les elements du tableau temporaire...
    {
    if(($temporaire[$i+1]['temps']-$temporaire[$i]['temps']>0.3) || $i==$l-2) // Si l'on change d'intervalle.
    {
    $fin_intervalle=$i;
    echo "pic d’amplitude trouvé entre $debut_intervalle et $fin_intervalle <br>"; $debut_intervalle=$i+1; // On cherche les intervalles de clé.
    $maximum=$temporaire[$debut_intervalle]['amplitude']; // Début de la monté pour l'amplitude.
    echo "Au début de l’intervalle, le maximum vaut $maximum <br>" ;
    $temps_max=$temporaire[$debut_intervalle]['temps']; // Début de la monté pour le temps.
    echo "Au début de l’intervalle , le temps vaut $temps_max <br>" ;
    for($k=$debut_intervalle ;$k < count($fin_intervalle); $k++)
    {
    if($temporaire[$k]['amplitude'] > $maximum AND $temporaire[$k]['temps'] > $temps_max) // Si l'amplitude est supérieur à la monté de l'amplitude.
       {
          $maximum=$temporaire[$k]['amplitude']; // L'amplitude est égale au début de la monté. ( ca devrait être le maximum mais il me met une égalité)
          $temps_max=$temporaire[$k]['temps']; // Le temps est égale au temps du début de la monté.
       }
     
     }
        $maxi[$indice]['temps']=$temps_max;  // Contient le temps des amplitudes maximales
        $maxi[$indice]['amplitude']=$maximum; // Contient les amplitudes     maximales.
      $indice++;
    }
     
    $i++;
    }

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Qu'est-ce que tu veux dire par "une égalité au lieu du maximum" ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    C'est à dire que je recherche la valeur maximum dans chaque intervalle, à partir donc d'une certaine valeur. Par exemple j'ai un intervalle [467 ; 462 ]. Cette intervalle peut contenir comme valeur maximale 520. J'ai donc mis, if $temporaire[$k]['amplitude'] > $maximum, dans notre exemple, $temporaire[$k] est une valeur quelconque exécuté en boucle donc qui continue, et maximum est 467. Ensuite j'ai mis dans ce if : alors $maximum = $temporaire[$k]. Il devait donc me trouver la valeur maximale dans l'intervalle [467 ; 462], mais il me met que $maximum = 467, alors que c'est impossible, la valeur maximale dans notre exemple devrait être 520. C'est un peu brouillon mais, j'espère avoir été assez claire

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si on élague un peu ton code de tous ses echos, on retrouve ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $fin_intervalle=$i;
    $debut_intervalle=$i+1; // On cherche les intervalles de clé.
    for($k=$debut_intervalle ;$k < count($fin_intervalle); $k++){
    ..
    }
    M'est avis que ton count n'a rien à faire là (count sur autre chose qu'un tableau ou un objet, ça renvoie toujours 1)

    Ensuite, en supposant qu'on vire le count, si on prend comme exemple $i = 2, on se retrouve avec comme condition : for ($k=3; $k < 2; $k++)

    Donc il faut que tu renvoie les conditions de ta boucle et/ou le remplissage de ton tableau.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci Beaucoup de votre réponse. Effectivement vous aviez raison
    Mais maintenant j'ai un autre problème, j'ai beau y réfléchir, je ne vois pas la solution. Mon code trouve bien un maximum, mais que sur un seul intervalle, et cela se répète. Voici mon code modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    $l = count($temporaire); // Count va compter tous les elements du tableau temporaire, et on la met dans la variable $l.
    $i = 0; // On définit la variable
    $maxi = array(); // On créer le tableau maxi qui va contenir les maximum d'amplitude.
    $indice=0; // On definit les variables.
    $debut_intervalle = 0;
     
     
    while($i<$l-1) // Tant qu'on est pas passer par tous les elements du tableau temporaire...
    {
    if(($temporaire[$i+1]['temps']-$temporaire[$i]['temps']>0.3) || $i==$l-2) // Si l'on change d'intervalle.
    {
    $fin_intervalle=$i;
    echo "pic d’amplitude trouvé entre $debut_intervalle et $fin_intervalle <br>"; $debut_intervalle=$i+1; // On cherche les intervalles de clé.
    $maximum=$temporaire[$debut_intervalle]['amplitude']; // Début de la monté pour l'amplitude.
    echo "Au début de l’intervalle, le maximum vaut $maximum <br>" ;
    $temps_max=$temporaire[$debut_intervalle]['temps']; // Début de la monté pour le temps.
    echo "Au début de l’intervalle , le temps vaut $temps_max <br>" ;
    for($k=0 ;$k < $fin_intervalle; $k++)
    {
    if($temporaire[$k]['amplitude'] > $maximum) // Si l'amplitude est supérieur à la monté de l'amplitude.
       {
          $maximum=$temporaire[$k]['amplitude']; // L'amplitude est égale au début de la monté. 
          $temps_max=$temporaire[$k]['temps']; // Le temps est égale au temps du début de la monté.
       }
     }
     
       	           $maxi[$indice]['amplitude']=$maximum;
                   $maxi[$indice]['temps']=$temps_max; 
     
            $indice++;
     
    }
     
    $i++;
    }

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'ai rien dit. Problème Résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme intervalle nombres aleatoires
    Par Oasis-fruité dans le forum Débuter
    Réponses: 3
    Dernier message: 11/02/2013, 18h00
  2. probleme recherche du maximum
    Par einsteineuzzz dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 22/02/2011, 09h48
  3. Réponses: 4
    Dernier message: 03/02/2011, 09h05
  4. Probleme pour comparer des intervalles
    Par mslider dans le forum Débuter
    Réponses: 6
    Dernier message: 01/04/2009, 11h31
  5. [TP] Problème avec les intervalles de char
    Par Petrucci dans le forum Turbo Pascal
    Réponses: 29
    Dernier message: 11/11/2006, 22h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo