Algo

glimore -  
 glimore -
Bonjour,
voila je suis bloquer dans l'algo il me reste les jours mais je bloque complet quelqu'un pourrais m'expliquer

voila le sujet [url=http://mabul.org/][img]http://apu.mabul.org/up/apu/2008/11/08/img-165957m3duj.jpg[/img][/url]

l'algo que j'ai réaliser jusqu'à présent :

(algo)

var

distance : entier
jours : texte
heure :

début

afficher ("saisir distance en KM :")
saisir (distance)
afficher ("saisir jour de réservation :")
saisir (jours)
afficher ("saisir heure de réservation :")
saisir (heure)

si distance < 50
| alors prix <- distance*0.15
| sinon si distance < 200
| | alors prix <- (50*0.15)+(distance-50)*.010
| | sinon prix <- (50*0.15)+(150*0.10)+(distance-200)*0.08
| fsi
fsi
Configuration: Windows XP
Firefox 3.0.3

6 réponses

  1. HostOfSeraphim Messages postés 7340 Statut Contributeur 1 609
     
    Vite fait :

    Si jour <> samedi et jour <> dimanche alors
    Si heure >= 8 et heure <=20 alors
    niveau = 3
    Sinon
    niveau = 1
    FSi
    Sinon
    Si heure >= 8 et heure <=20 alors
    niveau = 2
    Sinon
    niveau = 1
    FSi
    FSi

    prix = prix + niveau
    0
    1. glimore
       
      merci mais tu pourrais m'expliquer ta démarche car j'ai pas super compris
      0
      1. HostOfSeraphim Messages postés 7340 Statut Contributeur 1 609 > glimore
         
        Tu vireras la dernière ligne (prix = prix + niveau), j'viens de regarder, j'ai oublié quelques trucs quand même.

        Ben en gros, le principe, c'est d'appliquer le niveau en fonction du jour et de l'heure. Il ne te reste plus qu'à ajouter au prix la valeur du niveau.

        0
      2. glimore > HostOfSeraphim Messages postés 7340 Statut Contributeur
         
        tjr pas compris dsl
        0
  2. glimor
     
    il est bon la mon algo bien aligné juste svp???
    0
    1. glimor
       
      var

      distance : entier
      jours : texte
      heure :


      début

      afficher ("saisir distance en KM :")
      saisir (distance)
      afficher ("saisir jour de réservation :")
      saisir (jours)
      afficher ("saisir heure de réservation :")
      saisir (heure)


      si distance < 50
      | alors prix <- distance*0.15
      | sinon si distance < 200
      | | alors prix <- (50*0.15)+(distance-50)*.010
      | | sinon prix <- (50*0.15)+(150*0.10)+(distance-200)*0.08
      | fsi
      fsi

      Si jour <> samedi et jour <> dimanche
      | alors
      | Si heure >= 8 et heure <=20
      | | alors niveau <- 3
      | | sinon niveau <- 1
      | |
      | fsi
      |
      |
      | sinon si heure >= 8 et heure <=20
      | | alors niveau = 2
      | | sinon niveau = 1
      | fSi
      FSi

      fin
      0
      1. glimore > glimor
         
        je trouve pas mon erreur j'ai essayer pourtant

        Option Explicit


        Sub main()
        Dim distance As Integer
        Dim heure As Integer
        Dim jours As Single
        Dim prix As Double


        distance = InputBox("saisir distance en KM :")
        jours = ("saisir jour de réservation :")
        heure = InputBox("saisir heure de réservation :")


        If distance < 50 Then
        prix = (distance * 0.15)
        ElseIf distance < 200 Then
        prix = (50 * 0.15) + (distance - 50) * 0.01
        Else: prix = (50 * 0.15) + (150 * 0.1) + (distance - 200) * 0.08
        End If


        If jours <> samedi And jour <> dimanche Then

        If heure >= 8 And heure <= 20 Then
        niveau = 3
        Else: niveau = 1
        End If

        ElseIf heure >= 8 And heure <= 20 Then
        niveau = 2
        Else: niveau = 1
        End If

        MsgBox ("prix du billets" & prix)

        fin
        0
  3. HostOfSeraphim Messages postés 7340 Statut Contributeur 1 609
     
    jours = ("saisir jour de réservation :")

    Manque le "InputBox".

    Ensuite, tu te doutes bien que le système ne va pas marcher si tu ne lui dis pas que lundi est avant mardi, etc... une solution : attribuer à chaque jour son numéro de la semaine : lundi est le 1, mardi le 2... ainsi, tu remplaces le nom du jour par son numéro, et tu fais les tests sur les numéros ("jour <> samedi et jour <> dimanche" devient "jour <6").

    0
    1. glimore
       
      j'ai pas tt compris

      oui pour le input box j'ai vu je l'ai remplacer et j'ai aussi changer les var

      mais pour le reste je voie pas
      0
      1. HostOfSeraphim Messages postés 7340 Statut Contributeur 1 609 > glimore
         
        Pour le reste :

        If jours <> samedi And jour <> dimanche Then

        Il faudrait convertir le jour en numéro, parce que pour le moment, le système ne peut pas savoir que lundi est avant mardi, par exemple. Pour lui, "lundi" n'est rien autre que du texte, comme "carotte" ou "piaf".

        Une solution consiste à faire ceci :

        Si jour="lundi" alors jour=1 FSi
        Si jour="mardi" alors jour=2 FSi
        Si jour="mercredi" alors jour=3 FSi
        Si jour="jeudi" alors jour=4 FSi
        Si jour="vendredi" alors jour=5 FSi
        Si jour="samedi" alors jour=6 FSi
        Si jour="dimanche" alors jour=7 FSi

        Bon, c'est loin d'être optimisé, mais au moins ça marche et c'est facile à comprendre.

        Ensuite, tu fais les tests sur les numéros à la place des jours...

        Quand tu marques If jours <> samedi And jour <> dimanche Then , c'est pour tester si le jour saisi est un jour de semaine ou un jour de week-end. En ayant remplacé les noms des jours par le numéro, tu vois que la semaine va du jour 1 (lundi ) au jour 5 (vendredi), les jours 6 et 7 étant donc le week end. Ca devient donc :

        If jour < 6 Then

        (si le jour est inférieur à 6, il est donc entre 1 et 5, soit un jour de la semaine... et c'est ce qu'on voulait tester)



        0
  4. glimore
     
    comme sa???

    Si jour="lundi" alors jour=1 FSi
    Si jour="mardi" alors jour=2 FSi
    Si jour="mercredi" alors jour=3 FSi
    Si jour="jeudi" alors jour=4 FSi
    Si jour="vendredi" alors jour=5 FSi
    Si jour="samedi" alors jour=6 FSi
    Si jour="dimanche" alors jour=7 FSi

    si jour < 1 et heure <> 0et8 et 20et24 alors niveau = 1
    si jour < 1 et heure <> 8et20 alors niveau = 3

    etc...
    0
    1. HostOfSeraphim Messages postés 7340 Statut Contributeur 1 609
       
      L'idée est là.

      Mais pour les deux dernières lignes, c'est jour < 6 (que tu peux traduire par "si jour est inférieur à samedi, vu que samedi = 6).

      Pour les heures, comme ce sont déjà des chiffres, rien à retoucher : tu peux bien utiliser "heure > 8 et heure < 20".

      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. glimore
     
    je voulais mettre

    si jour <-- 1 et heure <> 0et8 et 20et24 alors niveau = 1
    si jour <--- 1 et heure <> 8et20 alors niveau = 3
    0
  7. glimore
     
    ok merci sinon j'ai une autre question sur un autre algo je cherche a permuter deux valeurs pour en faite mettre la plus grande dans y et la plus petite dans y et je bloque un peut j'ai fait sa

    Option Explicit

    Sub main()
    Dim x As Double
    Dim y As Double
    Dim z As Double
    Dim permutation As Double

    x = InputBox("saisir x :")
    y = InputBox("saisir y :")

    ---------------------------------------------------------------------------

    permutation = z = x And y = x And x = y

    If x > y Then -> je ne sait pas comment faire ici
    MsgBox ("x : " & permutation)

    ------------------------------------------------------------------------------

    ElseIf x < y Then
    MsgBox ("x: " & x)
    MsgBox ("y: " & y)
    End If

    End Sub
    0