PGCD PPCM
damahdi
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
je suis actuellement étudiant en licence informatique et j'ai un petit souci.
Alors voilà, on me demande de créer une fonction pgcd_ppcm ayant comme paramètres deux entiers positifs et les adresses de deux variables (la première pour le pgcd et la seconde pour le ppcm) et qui retourne la constante ALLRIGHT (resp.ARGHH) si le calcul a pu s'effectuer (resp. sinon) et modifie les variables pointées en leur affectant respectivement le plus grand commun diviseur et le plus petit commun multiple des deux entiers passés en paramètres. Et donc voici mon programme:
Dans ce cas j'ai plusieurs problèmes, comme comment utiliser le resp. ARGHH pour le message ALLRIGHT et autre, et ma fonction n'est toujours pas correcte du à plusieurs erreur on me signale que certaine partie sont justes mais d'autres non avec ces messages d'erreur: Some possible problems Your function called over 10 and 48 returned 1644987948 as resuting value while 42 was expected , Some possible problems The third parameter of your function should be a pointer to an integer while 'int * pgcd' was found et Some possible problems, Caught segfault - Check if you did not accessed an address that you should have not (e.g. accessing an array out of its bounds). 0x0000000000403273 in pgcd_ppcm (a=10, b=10, pgcd=0x0, ppcm=0x7fffffffebdc) #0 0x0000000000403273 in pgcd_ppcm (a=10, b=10, pgcd=0x0, ppcm=0x7fffffffebdc)
Oui ça fait beaucoup d'erreur désolé mais c'est ma première année de programmation.
Merci d'avance pour vos réponses.
je suis actuellement étudiant en licence informatique et j'ai un petit souci.
Alors voilà, on me demande de créer une fonction pgcd_ppcm ayant comme paramètres deux entiers positifs et les adresses de deux variables (la première pour le pgcd et la seconde pour le ppcm) et qui retourne la constante ALLRIGHT (resp.ARGHH) si le calcul a pu s'effectuer (resp. sinon) et modifie les variables pointées en leur affectant respectivement le plus grand commun diviseur et le plus petit commun multiple des deux entiers passés en paramètres. Et donc voici mon programme:
int pgcd_ppcm(unsigned int a,unsigned int b ,int* pgcd,int* ppcm){ while(a != b && a != 0 && b != 0){ if(a > b){ a =a; a=a-b; } else{ a= b; } *pgcd = &a; } int p=a*b; *ppcm =(p / *pgcd); } int main(void) { int pgcd_ppcm(unsigned int a,unsigned int b,int* pgcd,int* ppcm); return EXIT_SUCCESS; }
Dans ce cas j'ai plusieurs problèmes, comme comment utiliser le resp. ARGHH pour le message ALLRIGHT et autre, et ma fonction n'est toujours pas correcte du à plusieurs erreur on me signale que certaine partie sont justes mais d'autres non avec ces messages d'erreur: Some possible problems Your function called over 10 and 48 returned 1644987948 as resuting value while 42 was expected , Some possible problems The third parameter of your function should be a pointer to an integer while 'int * pgcd' was found et Some possible problems, Caught segfault - Check if you did not accessed an address that you should have not (e.g. accessing an array out of its bounds). 0x0000000000403273 in pgcd_ppcm (a=10, b=10, pgcd=0x0, ppcm=0x7fffffffebdc) #0 0x0000000000403273 in pgcd_ppcm (a=10, b=10, pgcd=0x0, ppcm=0x7fffffffebdc)
Oui ça fait beaucoup d'erreur désolé mais c'est ma première année de programmation.
Merci d'avance pour vos réponses.
A voir également:
- Algorithme ppcm
- Logiciel algorithme euromillion - Télécharger - Loisirs créatifs
- Logiciel algorithme gratuit - Télécharger - Édition & Programmation
- Algorithme euromillion excel gratuit - Forum Algorithmes / Méthodes
- Algorithme ajout rapide snapchat - Forum Snapchat
- Ajout rapide snap - Forum Snapchat
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, je pense que tu devrais d'abord faire des exercices beaucoup plus simples.
je te suggère de d'abord calculer la somme de deux nombres.
je te suggère de d'abord calculer la somme de deux nombres.
- dans le code que tu postes, tu n'appelles pas valablement ta fonction dans main, tu ne fais que reproduire son prototype, sans passer des valeurs et variables définies dans main correspondantes aux types attendus
- tu n'as pas définit non plus dans main les variables que tu dois passer à ta fonction
- ton prototype devrait sans doutes être plutôt (même si cela n'a pas d'impact direct sur le bon fonctionnement du code, c'est plus rigoureux)
- ne sert à rien
- change la valeur de l'entier pointé par le pointeur pgcd en lui affectant l'adresse mémoire de a, ce n'est sans doutes pas ce que tu veux faire et ton code devrait probablement être pour changer la valeur de l'entier pointé par le pointeur pgcd en lui affectant le contenu de ... avec ton code, tu te retrouves donc avec une valeur affectée à l'emplacement pointé par qui n'a rien à voir avec la valeur calculée de ...
- selon son prototype, ta fonction retourne un , mais cette fonction ne comporte aucune instruction retournant quoi que ce soit
Le fait que tu fasses ce type d'erreurs signifie que tu dois revoir les bases du langage C et je suis assez d'accord avec la suggestion de yg_be :-)
Cela dit, avec ces indications, et ton cours de C, tu devrais arriver à corriger ton code sur le plan du langage C.
Ensuite, il faudra que tu t'attaques à l'algorithme mathématique.
cela devrait t'aider à comprendre tout cela :-)