Bonjour,
Je suis élève de première S et on m'a demandé d'utiliser le logiciel Algobox pour créer un algorithme avec lequel on puisse déterminer le signe d'un trinôme.
J'ai essayer :
>VARIABLES
b est du type nombre
c est du type nombre
a est du type nombre
Delta est du type nombre
x1 est du type nombre
x2 est du type nombre
x est du type nombre
>DEBUT_ALGORITHME
Lire a
Lire b
Lire c
Lire Delta
x1 PREND_LA_VALEUR (-b-sqrt(Delta))/2a
x2 PREND_LA_VALEUR (-b+sqrt(Delta))/2a
Delta PREND_LA_VALEUR b²-4*a*c
>SI ( Delta>0) ALORS
DEBUT_SI
>SI (x1<x2) ALORS
DEBUT_SI
AFFICHER "L"equation prend le signe de a
FIN_SI
>SINON
AFFICHER " L'equation prend le signe de -a"
FIN_SINON
FIN_SI
FIN_SI
>SI ( Delta==0) ALORS
DEBUT_SI
AFFICHER " L'equation prend le signe de a"
FIN_SI
>SI ( Delta<0) ALORS
DEBUT_SI
AFFICHER " L'equation prend le signe de a"
FIN_SI
>FIN_ALGORITHME
Mais quand j'essaie de le tester, on m'affiche :
***L'algorithme contient une erreur : impossible de le lancer***
***Vérifiez la syntaxe des affectations et des conditions***
Où est mon erreur ?
Merci pour votre aide...
bonjour
quelques erreurs :
lire
tu ne peux pas lire , tu le calcules avec la formule b²-4ac
x1 prend la valeur....
ceci n'est pas possible si < 0
Merci pour votre réponse, j'ai bien compris le problème avec delta ( je suis débutante avec algobox... )
par contre je n'ai pas bien compris la suite, pouvez vous m'expliquer ?
bonsoir
donne ton nouvel algorithme avec les premières modifications
suppression de la ligne : lire
en dessous mettre la ligne
PREND_LA_VALEUR b²-4*a*c
il ne faut mettre les formules de x1 et x2 que si >0
Oui c'est bien ce que j'ai fait non ?
DEBUT_ALGORITHME
Lire a
Lire b
Lire c
Delta PREND_LA_VALEUR b²-4*a*c
x1 PREND_LA_VALEUR (-bsqrt(Delta))/2a
x2 PREND_LA_VALEUR (-b+sqrt(Delta))/2a
SI ( Delta>0 )ALORS
DEBUT SI
SI (x1<x2)ALORS
DEBUT SI
SI (x<x1) ALORS
DEBUT SI
AFFICHER " L'equation prend le signe de a"
FIN SI
SINON
DEBUT SINON
AFFICHER "L'equation prend le signe -a"
FIN SINON
FIN SI
FIN SI
SI ( Delta==0 )ALORS
DEBUT SI
AFFICHER " L'equation prend le signe de a"
FIN SI
SI (Delta<0) ALORS
DEBUT SI
AFFICHER "L'equation prend le signe de a"
FIN SI
Voila, donc j'ai supprimé " lire delta".
bonsoir
tu ne peux pas calculer x1 et x2 sans savoir que >0
Après prend ....
écris la fin de ton algorithme
SI (Delta<0) ALORS
DEBUT SI
AFFICHER "L'equation prend le signe de a"
FIN SI
SI ( Delta==0 )ALORS
DEBUT SI
AFFICHER " L'equation prend le signe de a"
FIN SI
et maintenant tu traites le cas où > 0
là tu pourras calculer x1 et x2
D'accord, donc je change l'ordre, c'est fait
Si on isole le cas de Delta>0 , mon développement est il bon ?
bonjour
tout le début
variables ...
lire.....
calcul de delta,
si dela < 0....
si delta >0 ....
me semble correct (je n'ai pas pris le temps de l'écrire dans algobox)
Pour voir si ton programme fonctionne
essaie avec
x² + x + 1
4x² + 12 x + 9
une petite remarque : c'est l'expression et non l'équation qui est du signe de a
Euh, d'accord sauf que il y a forcement une erreur quelque part, lorsque que je veux le tester :
***L'algorithme contient une erreur : impossible de le lancer***
***Vérifiez la syntaxe des affectations et des conditions***
Mais je pense que c'est peut être quand j'ai affecter les valeurs aux variables, mon expression n'est peut etre pas bonne pour algobox
bonjour
ton programme bloque dès la ligne "x1 prend ......"
tu utilises Delta que le programme ne connaît pas encore
ces deux lignes doivent figurer après :
si delta >0
debut si
x1 prend.....
il faut que delta > o pour que tu puisses calculer la racine
carrée
quand tu auras déplacé ces deux lignes
ton programme devrait tourner dans le cas où delta > o ou delt a > 0
attention tu as écrit si Delta = = 0
je pense qu'il y a un = de trop
Après on pourra regarder delta > 0
il comporte des problèmes
D'accord, que pensez vous de ça ?
Delta==0 est une notation de algobox pour une égalité
Et j'y pense, ne devrait-on pas signaler dans l'algorithme que a est différent de 0 ?
bonjour
ce n'est pas l'équation mais l'expression qui prend le signe de a
si delta > o , l'expression prend le signe de a à l'extérieur des racines, de signe contraire à l'intérieur.
ton algorithme ne fait rien si x2 >x1
tu as oublié si x > x2 .....
Rien ne te dit que la première racine calculée sera la plus petite.
Si tu veux détailler, il faut que tu fasses un test pour savoir quelle est la plus petite des racines.
A toi de voir
bonjour
x ?
dans le cas où x1 < x2 tu ne dis pas ce qu'il faut faire si x1 < x < x2
le dernier bloc est faux si x1 > x2
à l'extérieur des racines on prend le signe de a
et que fait-on si x2 < x1 < x
en toute rigueur, il faudrait tester au début de programme a différent de 0
Pour simplifier si delta > 0 , j'écrirai simplement la propriété " ax²+ bx + c" est du signe de a à l'extérieur des racines, de signe contraire à l'intérieur (dans ce cas, je n'ai pas besoin de les calculer ).
Tout dépend de ce que tu veux précisément obtenir, le texte de l'énoncé étant relativement flou....
Oui voila ce que nous a donné le prof pour consigne :
a,b,c > algorithme > signe du trinôme
J'ai essayer de faire un "programme" des problèmes a rectifier, dites moi si je me trompe :
- Apres avoir lu les variables a,b,c on met : si a!=0 et on continu avec Delta prend la valeur etc...
- Peut être y a t il un problème d'expression dans les affectations de Delta, x1 et x2
- Dans le dernier bloc voir le cas où x2<x1<x
?
bonjour
après avoir lu a, il faut tester pour avoir a non nul
tu utilises x que le programme ne connaît pas
"si (x<x1....)"
Je ne comprend pas ce que vous dites sur tester a
et comment peut on faire pour qu'il reconnaisse x... je suis perdue...
bonjour,
quand tu lis a, il faut que a soit différent de zéro ; il faut donc que si a égale o, tu demandes une nouvelle valeur de a.
comme tu as fait pour deltala > o ou delta = 0 , j'écrirais
si delta >o alors
début de si
afficher " l'expression est du signe de a à l'extérieur des racines, du signe contraire à l'intérieur"
fin de si
Bien, si j'ai bien compris ce que vous m'avez dit, ça simplifie l'algorithme et il n'est plus question de x, de x1 ni même de x2. Donc :
Je pense aussi, pourtant, il affiche toujours :
***L'algorithme contient une erreur : impossible de le lancer***
***Vérifiez la syntaxe des affectations et des conditions***
bonjour
10ème ligne si .... il y a un ! après le a
cinquième ligne avant la fin
le fin si doit être complètement à la fin
Oui c'est une notation a!=0 pour dire que a différent de 0
Le FIN_SI est a la fin, il est oblige d'etre là
Quel soulagement j'ai enfin réussie ! Merci beaucoup pour votre aide, j'ai finalement trouvé la dernière erreur, Delta : b²-4ac s'écrit sur algobox : pow(b,2)-4*a*c
Merci encore
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :