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

JavaScript Discussion :

Calcul d'horraire - Itinéraire


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Calcul d'horraire - Itinéraire
    Bonjour à tous, je suis étudiant à l'université (L1), et j'ai un projet à faire en JavaScript (AlgoScript plus précisément, mais ça reprend le JS). J'ai comme projet de faire un calculateur d'itinéraire en transport en commun.

    J'ai besoin de donner l'heure à laquelle passe un bus à un arrêt. Pour cela, j'ai écris le code suivant (sans doute pas optimisé, mais j'essaie déjà de faire quelque chose qui fonctionne avant de l'améliorer).

    Description des variables :

    • DepH1 = Heure de départ de la première rotation de la ligne (initié à 10)
    • DepM1 = Minute de départ de la première rotation de la ligne (initié à 45)
    • tempsD = Temps de passage à l'arrêt de départ (pour les tests que j'ai fait = 14)
    • Arrets[] = Tableau donnant la liste de tous les arrêts
    • Ligne1[] = Tableau donnant les temps de passages de la ligne 1


    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
    37
    38
    39
    40
    41
      for (i = 0; i <= (Arrets.length); i = i + 1)
      {
        if (AD == Arrets[i])
        {
          tempsD = Ligne1[i] ;
        }
     
        if (AA == Arrets[i])
        {
          tempsA = Ligne1[i] ;
        }
      }
     
      while ((DepH1 * 60 + DepM1) <= (HD * 60 + DepM1 - tempsD))
      {
        DepM1 = DepM1 + 30 ;
        if (DepM1 > 59)
        {
          DepM1 = DepM1 - 60 ;
          DepH1 = DepH1 + 1 ;
        }
     
        if (DepH1 > 23)
        {
          DepH1 = DepH1 - 24 ;
        }
      }
     
      DepM1 = DepM1 + tempsD ;
     
      if (DepM1 > 59)
      {
          DepM1 = DepM1 - 60 ;
          DepH1 = DepH1 + 1 ;
        }
     
      if (DepH1 > 23)
      {
        DepH1 = DepH1 - 24 ;
      }
    }
    J'ai donc essayé en mettant et en enlevant le = dans la boucle while, mais dans les deux cas, le résultat n'est pas ce que j'attends.

    En gros (avec le =), lorsque je veux savoir le prochain bus après 15h35 à un arrêt, je devrais avoir 15h59 (pour l'arrêt choisi). Mais le script choisis d'afficher 15h29. J'ai essayé de changer plusieurs paramètres, mais je retombais à chaque fois sur ce résultat.

    Est-ce que quelqu'un aurait une solution à mon problème ?

    N'hésitez pas à me demander si vous souhaitez plus d'informations

    Cordialement

    D. Pageot

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    while ( ( DepH1 * 60 + DepM1 ) <= ( HD * 60 + DepM1 - tempsD ) ).

    Vérifier que l'ordre des opérations par défaut est le résultat souhaité.

    Ci-dessus, on a : ( ( DepH1 * 60 ) + DepM1 ) et ( ( HD * 60 ) + DepM1 - tempsD )

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Etant donné que DepH1 et HD représente un nombre d'heures que je veux mettre en musique, c'est bien dans cet ordre là que l'opération doit se faire.

    J'ai aussi essayé en rajoutant les parenthèses, mais cela ne change rien


    EDIT :

    J'ai réussi à régler une partie du problème en changeant une partie de la condition de la boucle while. Maintenant, cela fonctionne pour quelques demi-heures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      while ((DepH1 * 60 + DepM1) < (HD * 60 + DepM1))
    • 10h45 donnera 10h59
    • 10h59 donnera 10h59
    • 11h15 donnera 11h29
    • 11h45 donnera 11h29 (au lieu de 12h59)
    • 11h59 donnera 11h29 (au lieu de 12h59)
    • 12h15 donnera 12h29
    • 12h45 donnera 12h29 (au lieu de 12h59)
    • 12h59 donnera 12h29 (au lieu de 12h59)


    Un décalage à l'air de se créer, mais je ne vois pas tellement où.

    EDIT 2 :


    Problème réglé, je m'étais juste trompé de valeur dans la boucle (j'avais mis DepM1 au lieu de MD)

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 978
    Points : 44 169
    Points
    44 169
    Par défaut
    Bonjour,
    ...(j'avais mis DepM1 au lieu de MD) ...
    et oui encore une fois pourquoi ne pas utiliser de VRAI nom de variable comme par exemple heure_depart.

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

Discussions similaires

  1. Calcul de différents itinéraires
    Par Globoxx dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 24/02/2014, 18h28
  2. [Google Maps] Calcul du meilleur itinéraire
    Par cladoo dans le forum APIs Google
    Réponses: 4
    Dernier message: 15/11/2013, 11h32
  3. googlemap et le calcul d'itinéraire
    Par HwRZxLc4 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/09/2008, 09h40
  4. [Tableaux] Calcul d'itinéraire / route / étapes
    Par gb-ch dans le forum Langage
    Réponses: 9
    Dernier message: 08/08/2006, 08h17
  5. pb dans un calcul d'itinéraire
    Par yohan.fay dans le forum Delphi
    Réponses: 8
    Dernier message: 31/05/2006, 06h41

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