PGCD

Résolu/Fermé
Invadoria Messages postés 77 Date d'inscription jeudi 26 janvier 2012 Statut Membre Dernière intervention 14 décembre 2013 - 15 sept. 2013 à 18:21
Invadoria Messages postés 77 Date d'inscription jeudi 26 janvier 2012 Statut Membre Dernière intervention 14 décembre 2013 - 15 sept. 2013 à 19:11
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.


3 réponses

Invadoria Messages postés 77 Date d'inscription jeudi 26 janvier 2012 Statut Membre Dernière intervention 14 décembre 2013 4
15 sept. 2013 à 18:28
Le programme marche mais les résultats sont mauvais...
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 15/09/2013 à 18:33
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
0
Invadoria Messages postés 77 Date d'inscription jeudi 26 janvier 2012 Statut Membre Dernière intervention 14 décembre 2013 4
15 sept. 2013 à 18:44
Et bien dit moi clairement où je dois mettre les choses
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
15 sept. 2013 à 19:05
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.
0
Invadoria Messages postés 77 Date d'inscription jeudi 26 janvier 2012 Statut Membre Dernière intervention 14 décembre 2013 4
15 sept. 2013 à 19:09
Et ba dans ce cas, tu arrêtes de commenter avec tes commentaires à deux balles.

J'irai demander à des gens plus intelligents que toi qui ne se la pètent pas. Wouaw, tu peux calculer un PGCD en une ligne félicitaiton !!!

En attendant, t'as beau critiquer mon algo, je suis celui qui m'ont ma donné...
0
Invadoria Messages postés 77 Date d'inscription jeudi 26 janvier 2012 Statut Membre Dernière intervention 14 décembre 2013 4
15 sept. 2013 à 19:03
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.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 15/09/2013 à 19:09
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 ?
0
Invadoria Messages postés 77 Date d'inscription jeudi 26 janvier 2012 Statut Membre Dernière intervention 14 décembre 2013 4
15 sept. 2013 à 19:11
Je ne lis plus tes commentaires monsieur je sais tout.
0