Exercice d'algo a resoudre

Bonjour,
J'ai effectué cet exercice
J'aurais aimé savoir si ce que j'ai fait est bon ou pas...
Merci

Tarifs postaux
Voila la tarification en vigueur pour les lettres en service rapide :
Poids jusou'a Tarifs nets
20 g 0,50 €
50 g 0,75 € (soit 25 centimes de plus que le tarif precedent)
100 g 1,11 € (soit 36 centimes de plus que le tarif precedent)
250 g 1,90 € (soit 79 centimes de plus que le tarif precedent)
500 g 2,65 € (soit 75 centimes de plus que le tarif precedent)
Ecrire un algorithme qui affiche le tarif net du timbre en fonction du poids de la lettre en grammes.
Le calcul tarif est fonction du poids,et doit se faire uniquement en fonction de la majoration par rapport au tarif precedent.
Si la lettre a un poids superieur a 500g, le message suivant s'affiche "Veuillez vous renseigner aupres de votre bureau de poste"

Voici ce que j'ai fait:

Tarifs postaux

Début
poids<--0
prix<--0.50
Afficher (« Poser la lettre »)
Afficher (« poids de la lettre », poids)
Si poids <= 20 Alors
prix<-- prix
Si poids <= 50 Alors
prix<-- prix+0.25
Si poids <= 100 Alors
prix<-- prix+0.36
Si poids <= 250 Alors
prix<-- prix+0.79
Si poids<= 500 Alors
Prix<-- prix+ 0.75
Sinon
Afficher(« Veuillez vous renseigner auprès de votre bureau de poste »)
Finsi
Afficher(« Le prix du timbre est : »,prix)
Fin
Configuration: Windows XP
Firefox 2.0.0.12

13 réponses

  1. Début
    poids<--0
    prix<--0.50
    Afficher (« Poser la lettre »)
    Afficher (« poids de la lettre », poids)
    Si poids <= 20 Alors
    prix<-- prix
    sinon Si poids <= 50 Alors
    prix<-- prix+0.25
    sinon Si poids <= 100 Alors
    prix<-- prix+0.36
    sinon Si poids <= 250 Alors
    prix<-- prix+0.79
    sinon Si poids<= 500 Alors
    Prix<-- prix+ 0.75
    Sinon
    Afficher(« Veuillez vous renseigner auprès de votre bureau de poste »)
    Finsi
    Afficher(« Le prix du timbre est : »,prix)
    Fin

    mettre les finsi

    sinon tu peux faire des tant que poid > ____ et <= ____
    0
    1. Merci
      Donc , a priori mon algo est bon??
      Merci
      0
  2. ton algo est bon, sauf que si tu sors des poids réglemnantaires, tu vas tout de même afficher "le prix du timbre set 0.5", sachant que prix a été initialisé à 0.5 en début d'algo.
    il faut que tu trouve un moyen pour ne pas afficher "le prix du timbre set XX" quand tu passe dans le
    "Sinon
    Afficher(« Veuillez vous renseigner auprès de votre bureau de poste »)
    "
    0
    1. En faisant comme ca ca devrait aller non??
      :
      5) Tarifs postaux
      Début
      poids<--0
      prix<--0.50
      Afficher (« Poser la lettre »)
      Afficher (« poids de la lettre », poids)
      Si poids <= 20 Alors
      prix<-- prix
      Si poids <= 50 Alors
      prix<-- prix+0.25
      Si poids <= 100 Alors
      prix<-- prix+0.36
      Si poids <= 250 Alors
      prix<-- prix+0.79
      Si poids<= 500 Alors
      prix<-- prix+ 0.75
      Afficher(« Le prix du timbre est : »,prix)
      Sinon
      Afficher(« Veuillez vous renseigner auprès de votre bureau de poste »)
      Finsi
      Fin
      0
  3. il manque des sinon avant tout tes si excepté le 1er, et si tu fais comme ça, tu n'aura le message "le prix du timbre est XX" que dans le cas d'une lettre de poids >500
    pour te mettre sur la piste, pour afficher ce message, tu peux tester si le poids est valide. avec une variable en plus, c'est facile à faire.
    0
    1. Si tu ne met pas les "sinon si" après le premier si, ta lettre aura toujours le même prix puisque ton envellope si elle est <= a 20g elle est aussi <= 500g la lettre coutera donc toujours le maximum.

      Comprens tu ?
      0
  4. bonjour,

    Je pense qu'il y a quand même un petit problème dans vos algos ... Imaginons une lettre qui pèse 155 grammes, je ne vais payer que 0.86 € avec vos algos, au lieu de 1.11 € comme dit dans l'énoncé ...

    Un bon moyen de vérifier, c'est de prendre un crayon et du papier et décrire noir sur blanc ce qui se passe à chaque étape.

    Si j'écris ce que vous avez mis, ça donne ça :

    ma lettre pèse plus de 100 grammes et moins de 250 grammes, j'applique ce qu'il y a d'écrit :

    prix <-- prix + 0.36
    prix = 0.50 + 0.36 = 0.86 €

    copie à revoir ...

    ;o)

    polux
    0
    1. Euh...en theorie...sachant que j'affecte a chaque fois une nouvelle donnée a prix
      La variable prix change a chaque condition...donc
      Prix<--0 ...en premiere ligne
      Prix <-- Prix+0.36 ensuite...donc la viriable Prix a changer...

      Tu vois ou pas???

      Sinon...il est vrai qu'il manque des SInon a Mettre...
      Je suis en train de le faire là

      eMerci
      0
  5. Voila..
    Cela me semble bizarre..mais ..qui ne tente rien n'a rien...

    Tarifs postaux
    Début
    poids<--0
    prix<--0.50
    Afficher (« Poser la lettre »)
    Afficher (« poids de la lettre », poids)
    Si poids <= 20 Alors
    prix<-- prix
    Sinon
    Si poids <= 50 Alors
    prix<-- prix+0.25
    Sinon
    Si poids <= 100 Alors
    prix<-- prix+0.36
    Sinon
    Si poids <= 250 Alors
    prix<-- prix+0.79
    Sinon
    Si poids<= 500 Alors
    prix<-- prix+ 0.75
    Afficher(« Le prix du timbre est : »,prix)
    Finsi
    Si poids>=500 Alors
    Afficher(« Veuillez vous renseigner auprès de votre bureau de poste »)
    Finsi
    Fin
    0
    1. Tarifs postaux

      DEBUT

      poids<--0
      prix<--0.50
      Afficher (« Poser la lettre »)
      Afficher (« poids de la lettre », poids)
      SI poids >= 500
      Afficher(« Veuillez vous renseigner auprès de votre bureau de poste »)
      SINON

      SI poids <= 20 Alors
      prix<-- prix
      SINON SI poids <= 50 Alors
      prix<-- prix+0.25
      SINON SI poids <= 100 Alors
      prix<-- prix+0.61
      SINON SI poids <= 250 Alors
      prix<-- prix+1.40
      SINON SI poids<= 500 Alors
      prix<-- prix+ 2.15
      Fsi

      Afficher(« Le prix du timbre est : »,prix)
      FIN

      Mais la je ne pense pas que c'est ce que l'on attende de toi d'après cette phrase : Le calcul tarif est fonction du poids,et doit se faire uniquement en fonction de la majoration par rapport au tarif precedent.
      0
      1. Si poids<= 500 Alors
        prix<-- prix+ 0.75
        Afficher(« Le prix du timbre est : »,prix)
        Finsi

        La tu doit afficher ta reponse en dehors de ton SI, car sinon elle ne s'affichera que pour la dernière condition
        0
    2. ben non ... la variable prix ne change pas ... puisque la condition n'est pas remplie, on passe directement à la suivante sans toucher à la variable prix ... c'est le but d'un If ... Then ....Else ... qui veut dire : Si la condition est remplie alors on fait ça, sinon on fait autre chose

      copie à revoir une fois de plus

      ;o)

      polux
      0
      1. Tarifs postaux

        DEBUT

        poids<--0
        prix<--0.50
        Afficher (« Poser la lettre »)
        Afficher (« poids de la lettre », poids)
        SI poids >= 500
        Afficher(« Veuillez vous renseigner auprès de votre bureau de poste »)
        SINON

        SI poids <= 20 Alors
        prix<-- prix
        SINON SI poids >20 ET poids<= 50 Alors
        prix<-- prix+0.25
        SINON SI poids > 50 ET poids<= 100 Alors
        prix<-- prix+0.61
        SINON SI poids >100 ET poids <= 250 Alors
        prix<-- prix+1.40
        SINON SI poids>250 ET poids<= 500 Alors
        prix<-- prix+ 2.15
        Fsi
        Fsi

        Afficher(« Le prix du timbre est : »,prix)
        FIN

        Autant pour moi j'ai oublier ça ^^'
        0
    3. bravo ... c'est bien ... mais je ne pense pas que celà apporte grand chose à Bansan, qui va faire un copier/coller mais qui n'aura pas compris le fonctionnement de l'algo ...

      D'autre part, avec le SINON SI dans ce cas là tu n'as pas besoin de la double condition ...

      ;o)

      polux
      0
      1. Merci,
        J'ai en partie compris pkoi avoir mis le SI de >= 500 en premier...
        Mais pkoi n'est ce pas possible de le mettre en fin comme je l'ai fait...???
        0
    4. Si ça marche pareil que tu le mettes après, tu peux même le mettre avec SINON SI ... mais il y a encore une grosse erreur que personne ne relève ...

      C'est mon jour de bonté ... je te dis quoi :

      L'énoncé dit : Si la lettre a un poids superieur a 500g ...

      Dans l'algo on a :
      SI poids >= 500 alors   <---- ?????
      Afficher(« Veuillez vous renseigner auprès de votre bureau de poste ») 
      SINON


      et on a aussi :
      Si poids<= 500 Alors  <--- ici ça correspond à l'énoncé
      prix<-- prix+ 0.75 
      


      Mais j'ai toujours le problème du tarif de ma lettre de 155 grammes ???

      ;o)

      polux
      0
      1. Et celui ci??

        Début
        poids<--0
        prix<--0.50
        Afficher (« Poser la lettre »)
        Afficher (« poids de la lettre », poids)
        Si poids <= 20 Alors
        prix<-- prix
        Sinon
        Si poids <= 50 Alors
        prix<-- prix+0.25
        Sinon
        Si poids <= 100 Alors
        prix<-- prix+0.36+0.25
        Sinon
        Si poids <= 250 Alors
        prix<-- prix+0.79+0.36+0.25
        Sinon
        Si poids<= 500 Alors
        prix<-- prix+ 0.75+0.79+0.36+0.25
        Afficher(« Le prix du timbre est : »,prix)
        Finsi
        Si poids>500 Alors
        Afficher(« Veuillez vous renseigner auprès de votre bureau de poste »)
        Finsi
        Fin
        0
    5. encore une fois, ici, tu n'affiches le prix de ton timbre que si tu as une lettre qui pèse entre 250 et 500g
      en plus, si tu fais tes sinon et tes si suivants sur 2 lignes différentes, il faut que tu fermes tes sinon encapsulants
      si tu retourne à la ligne après ton sinon, ton nouveau si est une boucle si à part entière et il faut la fermer avant de fermer celle qui l'englobe.

      en gros, c'est
      si (condition)
      // traitement
      sinon
      si (condition)
      // traitement
      finsi // fin du 2e si
      finsi // fin du sinon

      ou alors
      si (condition)
      // traitement
      sinon si (condition)
      // traitement
      finsi
      0
      1. Oui, ça me paraît bien comme ça ... :o))

        J'espère que tu as mieux compris ... et n'oublie pas, une feuille et un crayon, rien de tel pour résoudre un algo et surtout vérifier si ça fonctionne en testant avec des cas de figure ...

        Désolé pour le msg 15, mais je crois que c'est préférable de faire soit même pour mieux comprendre le fonctionnement, plutôt que te donner une solution toute faite (fausse en plus) qui ne t'aurai servi à rien...

        bon courage

        ;o)

        Polux
        0
        1. Bonsoir,
          que dois je penser du message 19?

          En fin de compte...est ce que mon algo est bon ou non??

          Merci
          0
      2. Seb a un raison pour la présentation, tu dois faire :

        si (condition)
        // traitement
        sinon si (condition)
        // traitement
        sinon si
        //traitement
        ....
        finsi

        C'est tout
        0