Exercice d'algo a resoudre

Fermé
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 - 6 mars 2008 à 10:55
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 6 mars 2008 à 18:05
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

13 réponses

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
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
6 mars 2008 à 11:41
Merci
Donc , a priori mon algo est bon??
Merci
0
SebManfred Messages postés 484 Date d'inscription mardi 28 août 2007 Statut Membre Dernière intervention 20 mai 2011 128
6 mars 2008 à 11:55
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
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
6 mars 2008 à 12:12
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
il manque les sinon
0
SebManfred Messages postés 484 Date d'inscription mardi 28 août 2007 Statut Membre Dernière intervention 20 mai 2011 128
6 mars 2008 à 12:18
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
willerme Messages postés 35 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 6 mars 2008 7
6 mars 2008 à 12:27
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

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

Posez votre question
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
6 mars 2008 à 12:32
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
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
6 mars 2008 à 12:44
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
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
6 mars 2008 à 12:47
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
willerme Messages postés 35 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 6 mars 2008 7
6 mars 2008 à 12:48
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
willerme Messages postés 35 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 6 mars 2008 7
6 mars 2008 à 12:49
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
6 mars 2008 à 12:48
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
willerme Messages postés 35 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 6 mars 2008 7
6 mars 2008 à 12:51
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
6 mars 2008 à 12:57
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
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
6 mars 2008 à 13:11
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
6 mars 2008 à 13:31
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
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
6 mars 2008 à 13:48
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
SebManfred Messages postés 484 Date d'inscription mardi 28 août 2007 Statut Membre Dernière intervention 20 mai 2011 128
6 mars 2008 à 13:55
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
6 mars 2008 à 14:00
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
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
6 mars 2008 à 17:46
Bonsoir,
que dois je penser du message 19?

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

Merci
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
6 mars 2008 à 18:05
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