bonjour, je suis élève en 1ES, j'ai un devoir maison de maths à rendre après les vacances de Noël, voilà le sujet:
On souhaite étudier une équation de la forme (E) : ax²+bx+c=0 en fonction des réels a, b, et c. Proposez un algorithme qui permet:
1) Afficher (E) après la saisie de a, b et c
2) Les solutions de (E)
3) Forme factorisable
4) Etude de signe
Nous avons fait un algorithme mais, après avoir essayé de le lancer, Algobox nous indique qu'il y a une erreur de syntaxe des affectations et des conditions.
Pourriez-vous m'aider à me corriger?
1 VARIABLES
2 a EST_DU_TYPE NOMBRE
3 b EST_DU_TYPE NOMBRE
4 c EST_DU_TYPE NOMBRE
5 d EST_DU_TYPE NOMBRE
6 X0 EST_DU_TYPE NOMBRE
7 X1 EST_DU_TYPE NOMBRE
8 X2 EST_DU_TYPE NOMBRE
9 DEBUT_ALGORITHME
10 LIRE a
11 AFFICHER a
12 LIRE b
13 AFFICHER b
14 LIRE c
15 AFFICHER c
16 AFFICHERCALCUL a*pow(X,2)+b*X+c=0
17 SI (a!=0) ALORS
18 DEBUT_SI
19 d PREND_LA_VALEUR pow(b,2)-4*a*c
20 LIRE d
21 AFFICHER d
22 SI (d<0) ALORS
23 DEBUT_SI
24 AFFICHER "Bonjour il n'y a pas de solutions à l'équation (E)"
25 AFFICHER "Il n'y a donc pas de factorisation possible"
26 AFFICHER "L'expression prend le signe de a"
27 FIN_SI
28 SI (d>0) ALORS
29 DEBUT_SI
30 AFFICHER "Bonjour, il y a deux solutions pour l'équation (E)"
31 X1 PREND_LA_VALEUR (-b-sqrt(d))/2*a
32 X2 PREND_LA_VALEUR (-b+sqrt(d))/2*a
33 AFFICHER X1
34 AFFICHER X2
35 AFFICHER "La factorisation est possible"
36 AFFICHERCALCUL (X-X1)*(X-X2)
37 AFFICHER "l'expression (E) est du signe de a à l'exterieur des racines, et du signe contraire à l'intérieur"
38 SI (d==0) ALORS
39 DEBUT_SI
40 AFFICHER "Bonjour, il y a une solution double pour l'équation (E)"
41 X0 PREND_LA_VALEUR (-b)/(2*a)
42 AFFICHER X0
43 AFFICHER "La factorisation est possible"
44 AFFICHERCALCUL a*((X-X1)*(X-X2))
45 AFFICHER "L'expression (E) est toujours du même signe de a"
46 FIN_SI
47 FIN_SI
48 FIN_SI
49 FIN_ALGORITHME
AFFICHERCALCUL a*pow(X,2)+b*X+c=0 ça ne veut rien dire
AFFICHERCALCUL a*pow(X,2)+b*X+c à la rigueur
mais X n'a pas été déclaré et n'a pas reçu de valeur donc cette instruction ne veut pas dire grand chose.
après d PREND_LA_VALEUR pow(b,2)-4*a*c
l'instruction LIRE d est stupide puisqu'elle redemande la valeur de d
(-b-sqrt(d))/2*a il faut mettre des parenthèses : (-b-sqrt(d))/(2*a)
AFFICHERCALCUL (X-X1)*(X-X2) est une erreur, X n'a reçu aucune valeur
Bonjour,
déja AFFICHERCALCUL a*pow(X,2)+b*X+c=0
effectue un calcul de l'expression et n'y comprend rien du tout quand on lui dit à la fin du calcul de faire l'opération "égal"
en plus la variable X n'est pas définie, comme le dit Glapion.
que vouliez vous faire avec cette instruction ?
afficher le texte de l'équation ? ou quoi d'autre ??
pour afficher l'équation elle même c'est une succession de AFFICHER pour afficher chacun des morceaux séparément, des mélanges de texte et de valeurs de variables :
AFFICHER a affiche la valeur de la variable a
AFFICHER "*X^2 + " affiche le texte "*X^2 + "
AFFICHER b etc...
AFFICER "X + "
AFFICHER C
AFFICHER* "= 0" et le dernier fait un saut de ligne (le * derriere AFFICHER)
tous ces AFFICHER étant nécessaires pour faire ce que je pense que vous vouliez faire.
AFFICHERCALCUL (X-X1)*(X-X2)
idem faire ça avec des AFFICHER successifs pour séparer ce qui est du texte et ce qui est des valeurs de variables.
il y a plus astucieux mais je n'en parlerais pas (réservé aux experts)
tant que la différence entre message, variable et calcul n'est pas claire.
par ailleurs c'est un peu sot d'afficher la valeur de a que vous venez juste d'entrer par LIRE : elle est encore à l'écran sur la ligne au dessus !!!
ces afficher là ne servent à rien du tout.
autres remarques identiques à Glapion.
je me suis amusé à le réécrire, donc autant que tu en profites.
il peux encore être amélioré pour ne pas qu'il affiche des -- ou +- quand il fait les factorisations ou écrit l'équation à résoudre
mais il fait à peu près le job.
notamment note comme l'a dit mathafou la différence entre afficher des calculs et afficher des chaînes de caractères et donc l'utilisation de la variable L de type chaîne.
(tu peux le copier/coller dans algobox en mode éditeur de texte, ou bien directement en ligne dans proglab )
VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
d EST_DU_TYPE NOMBRE
X0 EST_DU_TYPE NOMBRE
X1 EST_DU_TYPE NOMBRE
X2 EST_DU_TYPE NOMBRE
L EST_DU_TYPE CHAINE
DEBUT_ALGORITHME
LIRE a
LIRE b
LIRE c
L PREND_LA_VALEUR "résolution de"+a+"X²+"+b+"X+"+c+"=0"
AFFICHER* L
SI (a!=0) ALORS
DEBUT_SI
d PREND_LA_VALEUR pow(b,2)-4*a*c
AFFICHER "le discriminant est : "
AFFICHER* d
SI (d<0) ALORS
DEBUT_SI
AFFICHER* "Bonjour il n'y a pas de solutions à l'équation (E)"
AFFICHER* "Il n'y a donc pas de factorisation possible"
SI (a>0) ALORS
DEBUT_SI
AFFICHER "l'expression (E) est positive pour toute valeur de x"
FIN_SI
SINON
DEBUT_SINON
AFFICHER "l'expression (E) est négative pour toute valeur de x"
FIN_SINON
FIN_SI
SINON
DEBUT_SINON
SI (d>0) ALORS
DEBUT_SI
AFFICHER "Bonjour, il y a deux solutions pour l'équation (E) :"
X1 PREND_LA_VALEUR (-b-sqrt(d))/(2*a)
X2 PREND_LA_VALEUR (-b+sqrt(d))/(2*a)
AFFICHER X1
AFFICHER " et "
AFFICHER* X2
AFFICHER "La factorisation est possible : "
L PREND_LA_VALEUR a+"(X-"+X1+")(X-"+X2+")"
AFFICHER L
SI (a>0) ALORS
DEBUT_SI
AFFICHER* "l'expression (E) est positive à l'exterieur des racines, et négative à l'intérieur"
FIN_SI
SINON
DEBUT_SINON
AFFICHER "l'expression (E) est négative à l'exterieur des racines, et positive à l'intérieur"
FIN_SINON
FIN_SI
SI (d==0) ALORS
DEBUT_SI
AFFICHER "Bonjour, il y a une solution double pour l'équation (E) : "
X0 PREND_LA_VALEUR -b/(2*a)
AFFICHER* X0
AFFICHER "La factorisation est possible"
L PREND_LA_VALEUR a+"(X-"+X0+")²"
AFFICHER L
SI (a>0) ALORS
DEBUT_SI
AFFICHER "l'expression (E) est positive pour toute valeur de x"
FIN_SI
SINON
DEBUT_SINON
AFFICHER "l'expression (E) est négative pour toute valeur de x"
FIN_SINON
FIN_SI
FIN_SINON
FIN_SI
SINON
DEBUT_SINON
AFFICHER* "a = 0 donc l'équation n'est pas du second degré"
SI (b!=0) ALORS
DEBUT_SI
AFFICHER "la solution est : "
AFFICHERCALCUL* -c/b
FIN_SI
SINON
DEBUT_SINON
SI (c==0) ALORS
DEBUT_SI
AFFICHER* "tous les coefficients sont nuls, il n'y a une infinité de solutions"
FIN_SI
SINON
DEBUT_SINON
AFFICHER* "a et b sont nuls et c est différent de 0, il n'y a pas de solutions"
FIN_SINON
FIN_SINON
FIN_SINON
FIN_ALGORITHME
je ne voulais pas parler de cette astuce consistant à faire des concaténations dans une variable chaine ...
à ce niveau (en gros débutant) le truc de la chaine qu'on fabrique est un peu compliqué par rapport à des AFFICHER bien clairs comme je le proposais.
C'est vrai qu'on peut aussi améliorer en gérant les signes, les valeurs nulles, les valeurs égales à ±1 etc
pour avoir un affichage propre dans tous les cas de figure, mais au pris de grosses complications
(en fait il faut connaitre le JavaScript pour s'en sortir à bon compte, sinon on va avoir des lourds enchainements de SI / SINON)
Bonjour à tous.
J'ai pris le temps de lire chaque message ! je vais appliquer les conseils que vous m'avez donné, et je vous tiens au courant !
merci à vous tous !!!
bonne journée
Bonjour, je suis eleve en 1ere j'ai un devoir de maths à rendre bientot . C'est un algorithme, mais j'ai un probleme de syntaxe
Merci encore à tous ! Nous avons réussi. On préfere supprimer le sujet car nous avons peur que notre prof le voit et qu'il pense qu'on a triché ! Merci encore à tous !
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :