Algorithme
tulipe96
Messages postés
7
Statut
Membre
-
Smiley32 Messages postés 157 Date d'inscription Statut Membre Dernière intervention -
Smiley32 Messages postés 157 Date d'inscription Statut Membre Dernière intervention -
Bonsoir
J'ai fait un algorithme d'Euclide (PGCD) svp, pourriez-vous me le corriger ?
J'ai fait un algorithme d'Euclide (PGCD) svp, pourriez-vous me le corriger ?
Algorithme PGCD;
Var A, B : réel;
m, r : entier;
Debut
Ecrire("Introduisez deux nombres: ");
Lire(A, B);
Si (B=0) alors
debut
Ecrire ("Erreur de saisie");
fin;
Sinon
debut
Si (A=B) alors
debut
Ecrire("PGCD(", A, ";", B, ")=", A);
fin;
Sinon
debut
si (A mod B) alors
debut
Ecrire("PGCD(",A, ";", B , ")=", B);
fin;
Sinon
debut
Repeter
debut
r <--- (A mod B);
A <--- B;
B <--- r;
m <--- (A mod B);
fin;
jusqu'à (m=0)
Ecrire ("PGCD(", A, ";", B, ")=", B);
fin;
fin;
fin;
FIN.
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
2 réponses
-
Tout d'abord, ta question n'a rien à voir avec du C, non ?
Ensuite, tu pourais indenter un peu ton algo :
Algorithme PGCD; Var A, B : réel; m, r : entier; Debut Ecrire("Introduisez deux nombres: "); Lire(A, B); Si (B=0) alors debut Ecrire ("Erreur de saisie"); fin; Sinon debut Si (A=B) alors debut Ecrire("PGCD(", A, ";", B, ")=", A); fin; Sinon debut si (A mod B) alors debut Ecrire("PGCD(",A, ";", B , ")=", B); fin; Sinon debut Repeter debut r <--- (A mod B); A <--- B; B <--- r; m <--- (A mod B); fin; jusqu'à (m=0) Ecrire ("PGCD(", A, ";", B, ")=", B); fin; fin; fin; FIN.
Ensuite, quand tu met "si (A mod B) alors ", tu cherches à tester quand A modulo B vaut 0 ? car je ne vois aucun test (ou alors avec 1 en programmation)
De plus, tu pourquoi A et B sont réels ? Tu fais le PGCD de deux nombres réels avec un reste entier ?-
Merci beaucoup Smiley32, non c'est juste un algorithme simple en français, je ne l'ai pas traduit en langage c..
je ne savais pas comment rendre l'algorithme plus clair comme vous l'avez fait, autrement je l'aurai modifié, merci pour votre aide
oui j'ai oublié le zero dans ma condition (A mod B=0) sinon, j'ai essayé de le programmer en c et de l'exécuter avec le logiciel devc++, malgré qu'il n'y a pas d'erreurs son exécution ne donne aucun résultat à part celui de l'affichage du message "erreur de saisie" Je ne vois pas où est le problème, pourriez vous m'aider à retrouver mon erreur svp ... -
-
-
Salut,
voici le code en C : rien n'est compliqué, c'est juste le langage qui change :
#include <stdio.h> #include <stdlib.h> int main() { int a, b; int m, r; printf("Introduisez deux nombres :\n"); scanf("%d", &a); scanf("%d", &b); if(b == 0) { printf("Erreur de saisie\n"); } else { if(a == b) { printf("PGCD(%d;%d)=%d", a, b, a); } else { if(a % b == 0) { printf("PGCD(%d;%d)=%d", a, b, b); } else { do { r = a % b; a = b; b = r; m = a % b; } while(m != 0); printf("PGCD(%d;%d)=%d", a, b, b); // Erreur dans l'affichage : a et b ne sont plus ceux du départ } } } return 0; }
Ensuite, j'ai repéré une petite erreur d'affichage : lors de ton affichage de a et b, il faut vérifier que a et b sont encore ceux du départ