gros problème sur des algos

gros problème sur des algos - Algo - Programmation

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
 

Reply

Marsh Posté le 25-10-2005 à 09:07:09   

Reply

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..., ...)

Reply

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?

Reply

Marsh Posté le 25-10-2005 à 13:10:28    

SVP aidez moi sinon je comprendrais jamais !

Reply

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

Reply

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...

Reply

Marsh Posté le 25-10-2005 à 15:25:26    

nan la TVA et les faris de port ne sont pas ds l'énoncé

Reply

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 <=

Reply

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

Reply

Marsh Posté le 25-10-2005 à 17:35:03    

Max99 a écrit :

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


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 :)

Reply

Marsh Posté le 25-10-2005 à 17:35:03   

Reply

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

Reply

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...

Reply

Marsh Posté le 25-10-2005 à 18:24:05    

ok merci à tous pour votre aide j'ai compris c'est le principal, merci

Reply

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) )

Reply

Marsh Posté le 26-10-2005 à 14:23:27    

sinon j’ai fait mon dernier exercice que j’avais à faire mais je suis pas sur, cela donne ça :
 
L’entreprise 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 l’indemnité 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 l’algorithme qui permet de calculer l’indemnité kilométrique pour un représentant.
 
3. Modifier l’algorithme précédent de façon à ce que l’on puisse calculer l’indemnité de plusieurs représentants. La condition d’arrê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 j’ai 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 “l’indemnité 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 “l’indemnité 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 l’indemnité de plusieurs représentants, j’ai pas trop compris

Reply

Marsh Posté le 27-10-2005 à 09:42:23    

personne ne peut me dire si ça semble bon ou complètement hors sujet

Reply

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


Message édité par TheRom_S le 27-10-2005 à 15:45:16
Reply

Marsh Posté le 27-10-2005 à 16:39:31    

ok merci beaucoup

Reply

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?

Reply

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, ...)


Message édité par TheRom_S le 28-10-2005 à 02:24:05
Reply

Marsh Posté le 30-10-2005 à 08:44:07    

ok j'a

Reply

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

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed