gros problème sur des algos - Algo - Programmation
Marsh Posté le 25-10-2005 à 11:56:44
Bonjour,
Tu as testé avec les exemples donnés ? Apparemment, non :
Avec 120 kg tu devrais avoir 170 euros. Et tu as :
Début
Tarif1 <- Poids * 1.2 * (1+0.196) Tarif1=172.224
Tarif 2 <-Tarif1 + Prest1 *1 <Prest1 n'est pas initialisé!>Tarif2=172.224+20*1=192.224
Tarif3 <- Tarif2 +Prest2 *0.50 Tarif3=192.224+ (-880)*0.5=-246,776
Afficher ("saisissez le poids de la commande" )
Saisir (Poids) 120
Prest1 <- Poids -100 20
Prest2 <-Poids -1000 -880
Si Poids < 100Faux
Alors résultat <- Tarif1
Sinon Si Poids <1000 Vrai
Alors résultat <-Tarif2 Resultat=192.224
Sinon Si poids > 1000
Alors résultat <-Tarif3
Fin si
Fin si
Fin si
Afficher "le montant de la commande est : ", résultat + 5 (le frais de port)197.224
Fin
Quelques remarques :
1. Pour Tarif1, tu tiens compte de la TVA (1+0.196). Et pour les autres tarifs ?
2. Tu calcules tes tarifs avant d'avoir le poids du colis !
3. C'est pas très optimisé (TVA en dur, la boucle SI..SINON..., ...)
Marsh Posté le 25-10-2005 à 12:12:14
olalala je suis nul, pourtant ça m'interesse mais je comprends pas grand chose, ça veut donc dire que je dois juste rajouter la TVA pour les tarif 2 et 3 et c'est bon?
Marsh Posté le 25-10-2005 à 13:40:08
salut
tu peux déja corriger ton énnoncé : le tarif 1 c'est 1,5 / kg
sinon, les exemples sont faux : 120 + 850 != 1000 alors qu'avec 150 + 850 ca marche (ton poids à 900 kg), les autres : pareil
donc oublie la tva
en gros tu as 3 cas à tester :
pds<100 :
plutot que de lire la réponse, essaye de trouver à chaque fois coment tu calcules le prix à la main
après t'as juste à écrire la formule
Spoiler : px=pds*1.5 |
100<=pds<1000 :
Spoiler : px=150+(pds-100) |
1000<=pds :
Spoiler : px=1050+(pds-1000)/2 |
Marsh Posté le 25-10-2005 à 14:14:57
Max99 a écrit : olalala je suis nul, pourtant ça m'interesse mais je comprends pas grand chose, ça veut donc dire que je dois juste rajouter la TVA pour les tarif 2 et 3 et c'est bon? |
Question :
C'est dans le sujet, la TVA et les frais de port (5 euros) ?
Sinon, comme Therom_s, si tu veux faire un bon algorithme (quel que soit le sujet), pose-toi la question "Comment moi je ferais ?" et essaye de décrire ta méthode sur le papier...
Marsh Posté le 25-10-2005 à 15:27:21
mais par contre y a un problème mon professeur ne veut pas que j'utilise le < ou = , il veut que les < ou > mais pas le <=
Marsh Posté le 25-10-2005 à 16:41:43
Mais si j'enlève les prest c pas bon?
moi g fait ça:
Algo coût du transport
var:
poids: entier */poids de la commande
Tarif1 : entier */valeur de la variable du tarif numéro 1
Tarif2: entier */valeur de la variable du tarif numéro 2
Tarif3: entier */valeur de la variable du tarif numéro 3
résultat */ le prix global de la commande
Début
Afficher "saisissez le poids de la commande"
saisir (poids)
Si poids < 1001 ALORS
resultat <- poids * 10.5
sinon si poids < 1001 ALORS
resultat <-100*1.5 + (poids - 100) *1
sinon si poids > 1000 ALORS
resultat <-100*1.5+(1000-100)*1 +(poids -1000) *0.50
Fin si
Fin si
Fin si
Tarif1 <- poids *1.5
Tarif2 <- Tarif1 + (poids -100) *1
Tarif 3 <- Tarif 2 + (poids -1000) *0.50
AFFICHER "le montant de la commande est:", resultat
Fin
Y a t-il encore des erreurs ?
PS: je savais pas trop ou mettre les tarif donc je les ai mit à la fin car il faut connaitre le poids avant
Marsh Posté le 25-10-2005 à 17:35:03
Max99 a écrit : Mais si j'enlève les prest c pas bon? |
Tu crois pas qu'il y a un petit problème, en rouge ?
Et Tarif1, Tarif2, Tarif3, ils servent à quoi ?
Ton prof te dis de tester avec les exemples. Tu l'a fais ?
---------
Sinon, ça commence à être bon
Marsh Posté le 25-10-2005 à 17:46:12
pas besoin de tarif 1, 2 , 3, et en fait on peut faire :
Var
poids (entiers, saisie) : poids de la commande
resultat (entier, calculé) : prix global de la commande
Algo
Début
Afficher ("saisissez le poids de la commande" )
Saisir (Poids)
Si Poids < 101
Alors Resultat <- Poids *1,5
Sinon Si Poids < 1001
Alors Resultat <- 100 * 1,5 + (Poids - 100) * 1
Sinon Si Poids > 1000
Alors Resultat <- 100 *1,5 + (1000 - 100) * 1 + (poids - 1000) * 0,50
Finsi
Finsi
Finsi
Afficher ("le montant de la commande est : " , resultat )
Fin
Marsh Posté le 25-10-2005 à 17:57:24
Voilà....
Et pour le deuxième, c'est à peu près la même chose...
Simplement, tu boucles tant qu'on veut un autre client, et à la fin tu affiches le nombre de clients saisis et le cumul des montants...
Marsh Posté le 25-10-2005 à 18:24:05
ok merci à tous pour votre aide j'ai compris c'est le principal, merci
Marsh Posté le 25-10-2005 à 18:54:59
Max99 a écrit : mais par contre y a un problème mon professeur ne veut pas que j'utilise le < ou = , il veut que les < ou > mais pas le <= |
Si tu veux jouer au plus malin avec ton prof, tu peux toujours tirer parti du fait que :
(a == b) <=> ( !(a < b) && !(a > b) )
(a <= b) <=> ( !(a > b) )
Marsh Posté le 26-10-2005 à 14:23:27
sinon jai fait mon dernier exercice que javais à faire mais je suis pas sur, cela donne ça :
Lentreprise TRP verse une indemnité mensuelle de transport à ses représentants selon les modalités suivantes:
-du 1er au 100ème km : indemnité fixe de 15
-du 101ème au 250ème km: indemnité de 0,05 par km
-du 251ème au 400ème km: indemnité de 0,07 par km
-à partir du 401ème km: indemnité de 0,10 par km
1. Calculer lindemnité de transport du mois de mai 2002 pour les deux représentants suivants:
-M.Moulin qui a parcouru 372 km
-M.Talon qui a parcouru 468 km
2.Ecrire lalgorithme qui permet de calculer lindemnité kilométrique pour un représentant.
3. Modifier lalgorithme précédent de façon à ce que lon puisse calculer lindemnité de plusieurs représentants. La condition darrêt se fera avec la saisie de la réponse non à la question Y a-t-il un autre représentant? . On désire aussi connaître le montant total des indemnités versées.
Voila ce que jai fait:
1. M.Moulin = 372 km
1 à 100 :15
101 à 250: (250-100)*0.05
251 à 400: (372-250)*0.07
donc: 15+ (250-100)*0.05 +(372-250 )*0.07 = 31.04
M.Talon = 468 km
1 à 100 :15
101 à 250: (250-100)*0.05
251 à 400: (400-250)*0.07
400 à 468: (468-400)*0.10
donc 15+ (250-100)*0.05 +(400-250 )*0.07+(468-400)*0.10 = 39.8
Algo indemnité kilométrique
var
nom_représentant: chaîne
Nb km: réel
indemnité :réel
Début
SAISIR quel est le nom du représentant ?, nom_représentant
SAISIR Quel est le nombre de kilomètres ?, Nb km
Si Nb km <101
Alors indemnité <- indemnité+15
Sinon si Nb km <251
Alors indemnité <- indemnité+15+(250-100)*0.05
Sinon si Nb km <- 401
Alors indemnité <- indemnité+15+(250-100)*0.05+(400-250)*0.07
Sinon si Nb km > 400
Alors indemnité <-indemnité+15+(250-100)*0.05+(400-250)*0.07+(Nb km-400)*0.10
Fin si
Fin si
Fin si
Fin si
Afficher lindemnité kilométrique pour un représentant est:, indemnité
FIN
3.Algo indemnité kilométrique
var
nom_représentant: chaîne
Nb km: réel
indemnité :réel
compteur : entier
somme :entier
Début
somme <-0
compteur <-0
Répéter
compteur <- compteur +1
SAISIR quel est le nom du représentant ?, nom_représentant
SAISIR Quel est le nombre de kilomètres ?, Nb km
Si Nb km <101
Alors indemnité <- indemnité+15
Sinon si Nb km <251
Alors indemnité <- indemnité+15+(250-100)*0.05
Sinon si Nb km <- 401
Alors indemnité <- indemnité+15+(250-100)*0.05+(400-250)*0.07
Sinon si Nb km > 400
Alors indemnité <-indemnité+15+(250-100)*0.05+(400-250)*0.07+(Nb km-400)*0.10
Fin si
Fin si
Fin si
Fin si
Afficher lindemnité kilométrique pour un représentant est:, indemnité
somme <- somme + indemnité
Afficher Y a-t-il un autre représentant ? (O/N)
Saisir (réponse)
Jusquà réponse = N
Afficher le montant total des indemnités versées est: , somme
FIN
Par contre en ce qui concerne de calculer lindemnité de plusieurs représentants, jai pas trop compris
Marsh Posté le 27-10-2005 à 09:42:23
personne ne peut me dire si ça semble bon ou complètement hors sujet
Marsh Posté le 27-10-2005 à 15:43:00
oui ton algo est presque bon :
Répéter
indemnité=0 // pense à réinitialiser ta variable, sinon tu calcules directement la somme pour tous les représentants
compteur <- compteur +1 // inutile (inutilisé)
...
Si Nb km <101
Alors indemnité <- indemnité+15
Sinon si Nb km <251
Alors indemnité <- indemnité+15+(Nb km-100)*0.05
Sinon si Nb km <- 401
Alors indemnité <- indemnité+15+(250-100)*0.05+(Nb km-250)*0.07
Sinon si Nb km > 400
Alors indemnité <-indemnité+15+(250-100)*0.05+(400-250)*0.07+(Nb km-400)*0.10
Fin si
Fin si
Fin si
Fin si
...
somme <- somme + indemnité
...
Jusquà réponse = N
pour le "plusieurs représentants", ca doit vouloir dire un un affichage détailé avant la somme
Marsh Posté le 27-10-2005 à 16:49:02
attend je dois mettre indemnité<-0 entre répéter et SAISIR quel est le nom du représentant ?, nom_représentant ? Si oui pk car j'ai pas compris?
Marsh Posté le 28-10-2005 à 02:23:23
euh oui, dans ton algo, tu fais : indem=indem+ALGO(km)
au lieu de : indem=ALGO(km)
car sans remise à zero, indem garde sa valeur à chaque début de nouvelle boucle (Répeter)
et du coup tu calcule la somme
penses toujours à initialiser tes variables ou à choisir leur manière de progresser dans une boucle
c'est justement pour avoir ce genre de choix qu'on utilise les appels conditionnels (si ... alors, répéter ... tant que, ...)
Marsh Posté le 30-10-2005 à 08:44:33
ok j"ai compris mais je sais pas comment je vais faire car j'ai pas envi de tout recopier
Marsh Posté le 25-10-2005 à 09:07:09
Bonjour je suis actuellement en terminale Informatique et gestion, et nous étudions la programmation et notamment les algorithmes. Pas facile pour un apprenti comme moi, j'ai du mal, j'ai beaucoup de difficultés à comprendre mais je m'accroche !!!
J'ai 4 ou 5 exos à rendre , et j'en ai réussis 2 ou 3 mais je bloque énormément sur 2 donc j'aimerais un peu d'aide de quelques confirmés de ce forum !!!!
voici les exos :
Exercice 1 :Transport Express
Voici les tarifs de livraison d'une entreprise
-si le poids de la commande ne dépasse pas 100 kg, le prix appliqué sera de 1,20 euros par kg (tarif1)
-si le poids de la commande ne dépasse pas 1000 kg, le tarif 1 sera appliqué jusqu'à 100 kg puis, sur la tranche restante, le prix appliqué sera de 1,00 euro par kg (tarif2)
-au dela de 1000 kg, on continuera d'appliquer un système de tranche avec, sur la partie supérieure à 1000 kg, un tarif de 0,50 euro par kilogramme !!!!
Question: présenter l'algo qui permettra de calculer le cout du transport:
remarque: pour vous permettre de vérifier seul votre algorithme, vous pouvez comparer ces résultats aux vôtres.
Piods de la commande Coût du transport
80 120
120 170
950 1000
1860 1480
3500 2300
Exercice 2: Transport Express Plus
L'entreprise Transport Express souhaite améliorer sa feuille de route.
Elle souhaite avoir un récapitulatif de sa journée. Elle veut notamment que le numéro du client s'affiche automatiquement.
A la fin de la journée, elle souhaite savoir combien de clients elle a livrés et quel est le montant du chiffre d'affaires réalisé.
Question: On vous demande de compléter l'algorithme précédent de façon à répondre aux nouvelles exigences de l'entreprise
Vous devez obtenir l'écran ci-dessous :
Client n°1
Poids de la commande? 80
Coût du transport : 120
Autre client (oui / non)? Oui
Client n°2
Poids de la commande 120
Coût du transport 170
Autre client (oui / non)? Oui
Client n°3
Poids de la commande? 950
Coût du transport: 1000
Autre client (oui/non)? non
Nombre de clients livrés : 3
Chiffre d'affaires de la journée: 1290
pour le premier exercice j'ai trouvé un truc mais je suis même pas sur que ce soit bon :
var
poids : entier
Tarif1 : entier
Tarif 2 : entier
Tarif 3 : entier
Prest1, Prest2 :entiers
Résultat : entier
Début
Tarif1 <- Poids * 1.2 * (1+0.196)
Tarif 2 <-Tarif1 + Prest1 *1
Tarif3 <- Tarif2 +Prest2 *0.50
Afficher ("saisissez le poids de la commande" )
Saisir (Poids)
Prest1 <- Poids -100
Prest2 <-Poids -1000
Si Poids < 100
Alors résultat <- Tarif1
Sinon Si Poids <1000
Alors résultat <-Tarif2
Sinon Si poids > 1000
Alors résultat <-Tarif3
Fin si
Fin si
Fin si
Afficher "le montant de la commande est : ", résultat + 5 (le frais de port)
Fin
Je sais pas trop si c'est bon