PGCD
Résolu/Fermé
Invadoria
Messages postés
77
Date d'inscription
Statut
Membre
Dernière intervention
-
Invadoria Messages postés 77 Date d'inscription Statut Membre Dernière intervention -
Invadoria Messages postés 77 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis assez content de moi, j'ai fait un programme sans faute de syntaxe, toute fois, je reste méfiant aux vues des résultats :
#include <stdio.h>
#include <stdlib.h>
int main()
{
double a, b, pg, pp;
printf ("Entrez une valeur pour a : \n" );
scanf ("%lf", &a);
printf ("Entrez une valeur pour b : \n");
scanf("%lf", &b);
while (pp!=0){
if (a>b)
{
pp=b;
pg=a;
}
else
{
pp=a;
pg=b;
}
a= pg-pp;
if (a<pp)
{
pg=pp;
pp=a;
}
else
pg=a;
printf ("Le plus grand dénominateur communs est : %lf", pg);
return 0;
}
}
Si vous pouviez le tester pour me dire si il y a quelque chose de mauvais.
Je suis assez content de moi, j'ai fait un programme sans faute de syntaxe, toute fois, je reste méfiant aux vues des résultats :
#include <stdio.h>
#include <stdlib.h>
int main()
{
double a, b, pg, pp;
printf ("Entrez une valeur pour a : \n" );
scanf ("%lf", &a);
printf ("Entrez une valeur pour b : \n");
scanf("%lf", &b);
while (pp!=0){
if (a>b)
{
pp=b;
pg=a;
}
else
{
pp=a;
pg=b;
}
a= pg-pp;
if (a<pp)
{
pg=pp;
pp=a;
}
else
pg=a;
printf ("Le plus grand dénominateur communs est : %lf", pg);
return 0;
}
}
Si vous pouviez le tester pour me dire si il y a quelque chose de mauvais.
3 réponses
Il faut initialiser tes valeurs avant de les utiliser, tu ne dois pas faire de test (pp!=0) alors que tu ne donnes la valeur à pp que dans le if qui suit...
En plus ce if ne sert à rien, l'ordre de a et b n'a pas d'importance, normalement l'algorithme permute de lui même a et b si nécessaire.
Du coup tu n'as pas non plus besoin des variables pp et pg, a et b suffisent.
Remarque : tu ne fais jamais de congruence, ça n'a donc aucune chance de donner le bon résultat, en plus tu utilises des types double, ça n'a aucun sens !
"Je suis assez content de moi, j'ai fait un programme sans faute de syntaxe"
Mais ton programme fait n'importe quoi, alors quel intérêt que la syntaxe soit bonne ?La confiance n'exclut pas le contrôle
En plus ce if ne sert à rien, l'ordre de a et b n'a pas d'importance, normalement l'algorithme permute de lui même a et b si nécessaire.
Du coup tu n'as pas non plus besoin des variables pp et pg, a et b suffisent.
Remarque : tu ne fais jamais de congruence, ça n'a donc aucune chance de donner le bon résultat, en plus tu utilises des types double, ça n'a aucun sens !
"Je suis assez content de moi, j'ai fait un programme sans faute de syntaxe"
Mais ton programme fait n'importe quoi, alors quel intérêt que la syntaxe soit bonne ?La confiance n'exclut pas le contrôle
Je ne suis pas là pour faire ton travail à ta place ! Moi l'algorithme du pgcd je sais le faire, et ça tient en une ligne de code.
Toi tu nous montres ton code et moi je t'indiqué 5 choses qui n'allaient pas, à toi maintenant de reprendre tout ce qui n'allait pas (donc à peu près tout) pour arriver à ce qu'il faut.
Toi tu nous montres ton code et moi je t'indiqué 5 choses qui n'allaient pas, à toi maintenant de reprendre tout ce qui n'allait pas (donc à peu près tout) pour arriver à ce qu'il faut.
et ça :
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, b, R, le_pgcd;
printf ("Entrez une valeur pour a : \n" );
scanf ("%i", &a);
printf ("Entrez une valeur pour b : \n");
scanf("%i", &b);
R = a%b;
if(R!=0)
{
a=b;
b=R;
}
else
le_pgcd = b;
printf ("le PGCD de A et B est : %i", le_pgcd);
return 0;
}
Je viens de le faire avec un modulo, le prof ne nous avait pas dit d'en faire.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, b, R, le_pgcd;
printf ("Entrez une valeur pour a : \n" );
scanf ("%i", &a);
printf ("Entrez une valeur pour b : \n");
scanf("%i", &b);
R = a%b;
if(R!=0)
{
a=b;
b=R;
}
else
le_pgcd = b;
printf ("le PGCD de A et B est : %i", le_pgcd);
return 0;
}
Je viens de le faire avec un modulo, le prof ne nous avait pas dit d'en faire.
Pourquoi tu as enlevé ta boucle while ?
Je t'ai indiqué ce qui n'allait pas, mais le reste était a priori pas trop mal, en particulier ta boucle while était correcte.
"le prof ne nous avait pas dit d'en faire"
c'est la faute du prof ? tu cherches à calculer un plus grand diviseur, si tu ne fais jamais de divisions comment tu voudrais t'en sortir avec des soustractions ?
Je t'ai indiqué ce qui n'allait pas, mais le reste était a priori pas trop mal, en particulier ta boucle while était correcte.
"le prof ne nous avait pas dit d'en faire"
c'est la faute du prof ? tu cherches à calculer un plus grand diviseur, si tu ne fais jamais de divisions comment tu voudrais t'en sortir avec des soustractions ?