Algorithmique

Retrouver tous les sujets résolus.
Répondre
eleve19
Messages : 247
Enregistré le : mar. 3 janv. 2012 09:10

Algorithmique

Message par eleve19 » lun. 25 févr. 2013 13:57

Une publicité indique que, pendant l'opération "des prix doublement remisés", pour tout achat d'un montant supérieur à 50€, le prix à payer sera systématiquement baissé de 10€. De plus, si le nouveau prix à payer est supérieur à 100€, il sera baissé une deuxième fois de 10%.
1) Proposer une algorithme qui donne le prix payé en fonction du montant des achats:
"Entrer prix":? -> X
If X>50
Then X-10
Else If X>100
Then (X-10)*0,90
If end.
2) Programmer cet algorithme sur la calculatrice:
J'utilise une CASIO graph35+ et le programme marche mais que pour tous les nombres au dessus de 50 c'est à dire qu'au moment ou je choisis un nombre au dessus de 100; il ne diminue pas de 10% mais encore de 10€. J'ai essayé sur d'autres calculatrices et j'obtiens toujours les même résultat...
3) La fonction qui donne le prix payé en fonction du montant des achats est-elle linéaire? Est-elle affine?
Soit la fonction f définie sur R:
f(x)=0,90X-10
Cette fonction est de la forme a x-b donc elle est affine?
sos-math(21)
Messages : 10358
Enregistré le : lun. 30 août 2010 11:15

Re: Algorithmique

Message par sos-math(21) » lun. 25 févr. 2013 16:48

Bonjour,
Je pense qu'il y a une erreur dans ton algorithme :
Dans ta première condition, tu écris si X>50, alors X devient X-10 : donc si tu prends un prix supérieur à 100 euros, il est supérieur à 50 euros, donc cette condition s'applique et il te renvoie le prix baissé de 10 euros et c'est tout et il ne rentre pas dans la deuxième boucle.
En algorithmique, les conditions doivent s'exclure les unes des autres.
Il faut donc réécrire l'algorithme avec des conditions qui ne se "chevauchent" pas !
Pour construire ton algorithme, tu as besoin de savoir ce qui se passe selon les valeurs de x : on distingue 3 cas, donc trois intervalles :
- pour \(x\in[0\,;\,50]\), il ne se passe rien : le prix reste égal à f(x)= x ;
- pour \(x\in]50\,;\,110]\), le prix est supérieur à 50 euros donc on le baisse de 10 euros, mais comme il est inférieur ou égal à 110, le prix baissé reste inférieur à 100 euros donc on ne fait rien d'autre : x devient f(x)=x-10 ;
- pour \(x\in]110\,;\,+\infty[\), le prix est supérieur à 50 euros donc on le baisse de 10 euros mais le prix baissé reste supérieur à 100 euros donc on le baisse encore de 10% :
le prix x devient f(x)=0,9(x-10).
Il reste donc à mettre cela en algorithme : tu as besoin de deux conditions SI SINON, imbriquées l'une dans l'autre.
Essaie de traduire cela en langage naturel puis en programme calculatrice.
Bon courage
eleve19
Messages : 247
Enregistré le : mar. 3 janv. 2012 09:10

Re: Algorithmique

Message par eleve19 » mar. 26 févr. 2013 10:16

Bonjour,
J'ai suivi vos conseils et j'ai trouvé l'algorithme, sans le traduire en langage naturel:
"ENTRER PRIX": ? ->X
IF X<50
THEN X
ELSE IF 50<X<110
THEN X-10
IF END
IF X>110
THEN 0,9*(X-10)
IF END

Je vous remercie pour votre aide !
sos-math(21)
Messages : 10358
Enregistré le : lun. 30 août 2010 11:15

Re: Algorithmique

Message par sos-math(21) » mar. 26 févr. 2013 13:22

Bonjour,
Cela doit fonctionner, il faut juste le tester dans une calculatrice ou un logiciel type algobox :
je pense que l'on peu imbriquer une instruction SI alors SINON dans le sinon de la première instruction :
Je t'envoie une copie d'écran d'un algorithme saisi sous algobox et qui semble fonctionner :
algo.png
Bon courage pour la suite.
eleve19
Messages : 247
Enregistré le : mar. 3 janv. 2012 09:10

Re: Algorithmique

Message par eleve19 » ven. 1 mars 2013 17:11

Bonjour,
J'ai enfin terminé l’algorithme et il marche pour les différents prix remisés selon leur intervalle.
L'exercice donne au final une fonction affine si on développe: f(x)=0,9x-9
Merci beaucoup pour votre aide maintenant j'ai vraiment compris l'exercice!
Répondre