Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

algobox syntaxe

Posté par
mablan
13-12-16 à 14:59

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

Posté par
Glapion Moderateur
re : algobox syntaxe 13-12-16 à 15:41

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

Posté par
mathafou Moderateur
re : algobox syntaxe 13-12-16 à 15:59

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.

Posté par
Glapion Moderateur
re : algobox syntaxe 13-12-16 à 16:20

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

Posté par
mathafou Moderateur
re : algobox syntaxe 13-12-16 à 17:24


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)

Posté par
mablan
re : algobox syntaxe 14-12-16 à 09:41

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

Posté par
mablan
re : algobox syntaxe 14-12-16 à 10:27

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

Posté par
mablan
re : algobox syntaxe 14-12-16 à 10:29

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 !

Posté par
mathafou Moderateur
re : algobox syntaxe 14-12-16 à 11:35

à mon avis si tu as recopié l'algorithme proposé, c'est sûr
si tu as écris le tien en tenant compte des conseils, ce n'est pas tricher.
de toute façon il est impossible de supprimer des sujets ici sous ce prétexte futile.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !