J'ai trouvé l'algorithme :
Saisir a
Saisir b
Quotient(a;b)->q
Reste(a;b)->r
-Si r=0
Alors tant que a>1
a-2->a
Fin tant que
-Si a=0
Alors afficher "bleu"
-Sinon afficher "rouge"
-Sinon si r>0
Alors tant que r>1
Quotient(b;r)->c
Reste(b;r)->d
b->r
r->d
Fin tant que
Fin si
-Tant que c>1
c-2->c
Fin tant que
-b/r->p
-Tant que p>1
p-2->p
Fin tant que
-Si p=0 et c=0
Afficher "bleu"
-Sinon si p=0 et c=1
Afficher "rouge"
-Sinon si p=1 et c=0
Afficher "rouge"
-Sinon si p=1 et c=1
Afficher "bleu"
Fin si
Fin traitement
Bonsoir, je ne comprends pas pourquoi mon algorithme ne fonctionne pas sur Algobox. Je vous l'écris :
1 VARIABLES
2 a EST_DU_TYPE NOMBRE
3 b EST_DU_TYPE NOMBRE
4 q EST_DU_TYPE NOMBRE
5 r EST_DU_TYPE NOMBRE
6 c EST_DU_TYPE NOMBRE
7 d EST_DU_TYPE NOMBRE
8 p EST_DU_TYPE NOMBRE
9 DEBUT_ALGORITHME
10 LIRE a
11 LIRE b
12 q PREND_LA_VALEUR floor(a/b)
13 r PREND_LA_VALEUR a-(b*q)
14 SI (r==0) ALORS
15 DEBUT_SI
16 TANT_QUE (a>1) FAIRE
17 DEBUT_TANT_QUE
18 a PREND_LA_VALEUR a-2
19 FIN_TANT_QUE
20 SI (a==0) ALORS
21 DEBUT_SI
22 //Bleu
23 FIN_SI
24 SINON
25 DEBUT_SINON
26 //Rouge
27 FIN_SINON
28 FIN_SI
29 SI (r>0) ALORS
30 DEBUT_SI
31 TANT_QUE (r>1) FAIRE
32 DEBUT_TANT_QUE
33 c PREND_LA_VALEUR floor(b/r)
34 d PREND_LA_VALEUR b-(r*c)
35 r PREND_LA_VALEUR b
36 d PREND_LA_VALEUR r
37 FIN_TANT_QUE
38 FIN_SI
39 TANT_QUE (c>1) FAIRE
40 DEBUT_TANT_QUE
41 c PREND_LA_VALEUR c-2
42 FIN_TANT_QUE
43 p PREND_LA_VALEUR b/r
44 TANT_QUE (p>1) FAIRE
45 DEBUT_TANT_QUE
46 p PREND_LA_VALEUR p-2
47 FIN_TANT_QUE
48 SI (p=0 ET c=0) ALORS
49 DEBUT_SI
50 //bleu
51 FIN_SI
52 SI (p=0 ET c=1) ALORS
53 DEBUT_SI
54 //rouge
55 FIN_SI
56 SI (p=1 ET c=0) ALORS
57 DEBUT_SI
58 //rouge
59 FIN_SI
60 SI (p=1 ET c=1) ALORS
61 DEBUT_SI
62 //Bleu
63 FIN_SI
64 FIN_ALGORITHME
*** message déplacé ***
bonjour,
oui. Ca m'a pris un certain temps surtout parce que j'ai essayé de comprendre à quoi ca sert comme algo.
Quand j'ai enfin compris (parce que j'ai trouvé la réponse sur un autre topic = pas bien du tout => risque de bannissement...); j'ai essayé d'écrire à ma main petit bout par petit bout (il n'y a que comme ca que j'arrive à trouver les erreurs de syntaxe en général, ca a merdé quand j'ai fait un test avec = au lieu de == !
Pour la syntaxe, ton erreur (tes erreurs en fait) c'est = au lieu de == ; si tu les changes tous la syntaxe est bonne; en revanche l'algo est mal construit parce que si tu as un reste nul, après avoir écrit la couleur (afficher message et pas //blabla), tu passes à la ligne 43 et là c'est pas bon (division par 0!).
Pour ton test 14, il faut que tu associes un sinon pour éviter le problème (après 28 il basculera à fin algo).
Sinon il m'a semblé quand j'essayais de comprendre comment tournait l'algo, que
33 c PREND_LA_VALEUR floor(b/r)
34 d PREND_LA_VALEUR b-(r*c)
35 r PREND_LA_VALEUR b
36 d PREND_LA_VALEUR r
ne débouche sue rien. En effet tes lignes 35 et 36 font que r puis d prennent la valeur de b donc si ton b est différent de 1, ta boucle tourne indéfiniment puisque r vaudra toujours b et ne diminuera pas pour valoir 0 ou 1! (je pars du principe que b est non nul (tu pourrais rajouter un petit quelque chose pour empêcher de rentrer une valeur nulle.
*** message déplacé ***
Bonjour, merci d'avoir regardé et d'avoir déplacé mon sujet
Sur algobox il faut mettre un == c'est la syntaxe du logiciel.
Je dois mettre un arrêt donc après reste nul ? Je pense que l'erreur vient de la division par 0 alors.
D'accord je vais mettre un sinon sur la ligne 14 !
Donc je vais arranger ça pour b=/=0 et je pense que je vais enlever les lignes 35 et 36 !
Merci bien
Bonjour, merci d'avoir regardé et d'avoir déplacé mon sujet ca n'est pas moi qui ait déplacé; seuls les modérateurs le peuvent
Sur algobox il faut mettre un == c'est la syntaxe du logiciel. oui c'est ce que je t'ai dit; et c'est en remplaçant tes = par des == dans ce que tu as écrit que la syntaxe devient bonne...
Je dois mettre un arrêt donc après reste nul ? Je pense que l'erreur vient de la division par 0 alors. oui encore une fois c'est ce que je t'ai écrit!
D'accord je vais mettre un sinon sur la ligne 14 ! c'est une solution que je te propose, mais il y a certainement d'autres moyens
Donc je vais arranger ça pour b=/=0 et je pense que je vais enlever les lignes 35 et 36 ! euh... =/= c'est pour ? si oui la syntaxe est différente sur algo ca doit être != ou =! ou quelque chose comme ca
J'ai trouvé est-il possible de vous l'envoyer en privé histoire que ceux qui ont le DM se creusent quand même la tête avant d'avoir la réponse ?
Si tu penses qu'il y en a beaucoup qui ont ce DM et qui utilisent ilemaths...
il est interdit d'écrire son adresse email ici mais il est possible de la récupérer en regardant mes données (en cliquant sur le petit bonhomme; si je réussis à la faire apparaître)
ok j'ai récupéré; que souhaites tu que je fasse avec?
j'imagine que tu l'as déjà fait tourner pour vérifier qu'il est ok...
C'était pour que vous puissiez voir ce que ça donne au final.
Et j'ai changé les lignes qui servaient à rien
Merci bonne journée
effectivement il est beaucoup plus propre maintenant!
je pense qu'il ne serait pas inutile d'empêcher l'entrée de 0 comme valeur de b. Avec une petite boucle tant que b=0 afficher merci prendre une valeur non nulle pour b et refaire lire b.
Je n'ai d'ailleurs pas vérifié; est ce que tas a et b sont positifs ou peuvent-ils être négatifs? (et dans ce dernier cas, le fonctionnement est à vérifier...)
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :