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

Algorithmes et structures de données Discussion :

Boucle de recherche de durée dans plage horaire à 6 bornes


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Points : 0
    Points
    0
    Par défaut Boucle de recherche de durée dans plage horaire à 6 bornes
    Bonsoir,
    Tout je ne suis pas sur d'être dans le bon forum.
    Néanmoins je vous expose mon problème :

    En fonction d'une heure de début et d'une heure de fin, je cherche à récupérer le temps compris dans 5 plages horaires ( 6 bornes).

    En nommant l'heure de début HD et l'heure de fin HF, et les bornes B1 = 8, B2 = 12, B3 = 14, B4 = 18, B5 = 20 et B6 = 32 ( 8 le lendemain), comment écrire une boucle logique qui récupère les temps T1, T2,
    T3,T4 et T5.

    Merci pour votre aide

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Bonjour

    Pourquoi une boucle ? [EDIT] Là, j'ai parlé trop vite ...

    Je ferais 6 tests avec une division euclidienne de successivement (HD+B1, HD+B2, HD+B3, HD+B4, HD+B5 ... et HD+B6) par 24 et récupérer le reste qui correspondrait à T1, T2, T3,T4, T5 ... et T6
    ex : HD = 23, B6 = 32
    (23 +32) MOD 24 = 7
    Maintenant que vient faire HF dans tout ça ? Cette heure de fin doit être le même jour que HD soit le jour J ou J+1 ou J+2 ?

    Voilà mes réflexions du matin ... il se peut que je passe à coté du sujet mais ça fait une réponse
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Points : 0
    Points
    0
    Par défaut
    Bonjour,
    tout d'abord déjà merci pour ces éléments de réponse.
    Heure de fin (HF) est l'heure de fin qui peut prendre être sur le jour J ( exemple HD 10 h et HF 23 h), ou sur le jour J+1 ( exemple : HD 19 h et HF 25 soit 01 h du matin sur J+1)

    Merci

  4. #4
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Ah d'accord donc pas besoin de modulo ...
    Donc exercice simple ...

    ... à moins que le but de l'exercice soit la création (impérative ?) d'une boucle logique
    donc trouver une relation entre les bornes (8,12,14,18,20 et 32) ex: suite géométrique, arithmétique !?
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Points : 0
    Points
    0
    Par défaut
    Oui il me faudrait une boucle logique avec le test des bornes. Mais ceci n'est pas simple pour moi!
    Je souhaiterais utiliser des Si et FINSI.
    Si HD >= B1
    SI HF ???
    T1 = ????
    FINSI
    FINSI
    Je ne sais pas comment faire.
    Merci pour votre aide

  6. #6
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    D'accord,
    Donc à la réflexion, je propose quand même une boucle "tant que"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    test_borne = HD+B1 
    i = 1
    TANT QUE ( test_borne <= HF )
    <div style="margin-left:40px">
    Afficher "la borne B" i " est dans le fourchette"  
    i = i + 1
    Si i = 2 test_borne = HD+B2
    SINON Si i = 3 test_borne = HD+B3
    SINON Si i = 4 test_borne = HD+B4
    ...
    SINON
      { Condition de sortie de boucle à trouver ;) pour éviter une boucle à l'infini }
    FINSI</div>FIN TANT QUE
    Note : s'il n'y a aucun message d'affiché, c'est que pas une seule borne ne convient ...
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Points : 0
    Points
    0
    Par défaut
    Merci pour les éléments, mais je ne vois toujours pas comment faire.
    Avec trois bornes B1 (8), B2 (20), B3 (32), voici ce que j'arrive à faire avec mon programme. Je ne peux utiliser que des SI FINSI
    Comment faire avec 6 bornes ?
    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
    SI HD <= B1
          SI HF <= B2
             SI HF >= B1
                TEMPS = HF - B1
             FINSI
          SINON
             TEMPS = B2 - B1
          FINSI
       SINON
          SI HD <= B2
             SI HF <= B2
                TEMPS = HF - HD
             SINON
                TEMPS= B2 - HD
             FINSI
          FINSI
       FINSI

  8. #8
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Un truc à s'emmêler les pinceaux

    Bon partons sur cet exemple
    B1 (8), B2 (20), B3 (32)
    HD = 2
    HF = 25


    C'est quoi le/s résultat/s attendu/s ?


    et sur cet exemple
    B1 (8), B2 (20), B3 (32)
    HD = 12
    HF = 40


    C'est quoi le/s résultat/s attendu/s ?
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  9. #9
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Si tu veux absolument passer par une boucle, le mieux est d'utiliser un tableau :
    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
     
    procedure plage_horaire( x)
    B est un tableau de 6 entiers
    B[1] = 8
    B[2] = 12
    B[3] = 14
    B[4] = 18
    B[5] = 20
    B[6] = 32
     
    pour i = 1 a 5 pas 2
      si B[i] <= x <= B[i+1] alors 
         print ( " x est dans la plage " + B[i] + " à " + B[i+1] 
         renvoyer vrai
      fin
    fin
    renvoyer faux
    ou encore
    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
     
    procedure plage_horaire( x)
     
    DEBUT_PLAGE est un tableau de 3 entiers
    FIN_PLAGE est un tableau de 3 entiers
    DEBUT_PLAGE[1]= 8 ; FIN_PLAGE[1] = 12
    DEBUT_PLAGE[2]= 14 ; FIN_PLAGE[2] = 18
    DEBUT_PLAGE[3]= 20 ; FIN_PLAGE[3] = 32
     
    pour i = 1 a 3
      si DEBUT_PLAGE[i] <= x <= FIN_PLAGE[i] alors 
        print ( " x est dans la plage " + DEBUT_PLAGE[i] + " à " + FIN_PLAGE[i] 
        renvoyer vrai
      fin
    fin
    renvoyer faux
    C'est au collège qu'on a ce genre d'exercice ?
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  10. #10
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Si tu veux absolument passer par une boucle, le mieux est d'utiliser un tableau :
    ...
    C'est au collège qu'on a ce genre d'exercice ?
    =>
    Citation Envoyé par jopont Voir le message
    ...
    Je ne peux utiliser que des SI FINSI
    ...
    C'est gentil d'aider tbc92, moi je commençais à fatiguer, n'étant pas parti du bon pied ....
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par vttman Voir le message
    Un truc à s'emmêler les pinceaux

    Bon partons sur cet exemple
    B1 (8), B2 (20), B3 (32)
    HD = 2
    HF = 25

    5 h sur la plage de B2 à B3
    C'est quoi le/s résultat/s attendu/s ?


    et sur cet exemple
    B1 (8), B2 (20), B3 (32)
    HD = 12
    HF = 40

    12 h sur la plage de B2 à B3 et 8 h sur la plage de B1 à B2
    C'est quoi le/s résultat/s attendu/s ?

  12. #12
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Bon partons sur cet exemple
    B1 (8), B2 (20), B3 (32)
    HD = 2
    HF = 25
    5 h sur la plage de B2 à B3
    Et pas 12 h sur la plage B1 à B2 ?
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  13. #13
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Je propose ce type d'approche, c'est lourd
    mais ça se comprendra au moins dans l'intention ...
    et c'est facilement extensible aux 6 bornes

    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
     
    plage1 = B2-B1 
    plage2 = B3-B2 
     
    SI HD < B1
    ; rien à faire
    SINON SI HD >= B1 ET HD < B2
        plage1 = plage1 - (B1-HD) 
    SINON SI HD >= B2 ET HD < B3
        plage2 = plage2 - (B2-HD) 
    SINON SI HD > B3
    ; rien à faire
    FINSI
     
    SI HF < B1
    ; rien à faire
    SINON SI HF >= B1 ET HF < B2
        plage1 = plage1 - (HF-B2) 
    SINON SI HF >= B2 ET HF < B3
        plage2 = plage2 - (HF-B3) 
    SINON SI HF > B3
    ; rien à faire
    FINSI
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 238
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par vttman Voir le message
    Et pas 12 h sur la plage B1 à B2 ?
    oui 12 h

  15. #15
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    TT = HF -HD

    reprenons tes infos
    B1 = 8, B2 = 12, B3 = 14, B4 = 18, B5 = 20 et B6 = 32 ( 8 le lendemain),

    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
      RES =  TT MOD B6 
      QO   = TT DIV B6  
       SI QO  > 0 ALORS 
          US[I] = B6
          INC(I)
       FINSI
       RES1 = RES MOD B5 
       QO    = RES DIV B5  
       SI QO  > 0 ALORS 
          US[I] = B5
          INC(I)
       FINSI
       RES = RES1 MOD B4 
       QO    = RES1 DIV B4  
       SI QO  > 0 ALORS 
          US[I] = B4
          INC(I)
       FINSI
      ....
    on peut le faire avec un boucle mais il faut mettre tes interval en tableau
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

Discussions similaires

  1. [OL-2013] Rechercher email dans une plage horaire ou plage de jours
    Par petityom dans le forum Outlook
    Réponses: 3
    Dernier message: 23/06/2015, 18h20
  2. [XL-MAC 2011] Projet avec décomposition date et durée en plage horaire
    Par manutek dans le forum Excel
    Réponses: 1
    Dernier message: 09/12/2012, 18h05
  3. Réponses: 0
    Dernier message: 13/10/2010, 16h24
  4. [XL-2007] recherche couleur police dans plage celulle
    Par colbubu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/05/2010, 10h37
  5. Recherche et suppression dans plage choisie
    Par Veronique45 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/06/2009, 16h09

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