cs_bibou1234
Messages postés5Date d'inscriptionmercredi 24 février 2010StatutMembreDernière intervention 1 novembre 2010
-
1 nov. 2010 à 16:51
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
2 nov. 2010 à 10:53
Bonjour
Je commence à apprendre le C, et je dois realiser un programme qui permettrait de trouver si deux nombres sont amis (c'est à dire si la somme des diviseur du nombre A est egale au nombre B et vice versa)
j'ai fait mon programme, mais il ne marche pas (il me dit que tout mes nombres ne sont pas amis). Je ne trouve pas où se trouve l'erreur. Pouvez-vous m'aidez svp?
int main()
{
int a,b,res1, res2, somme, sommet, diviseur, diviseurt; printf("entrer un premier entier:");
fflush(stdin); /* vide le tampon temp du clavier ( force le programme a ce que
l'utilisateur tape quelle que chose au clavier) pas obligatoire de l'ecrire mais recommandé */
scanf("%d" , &a);
printf("la valeur entree est: %d \n" , a);
printf("entrer un deuxieme entier:");
fflush(stdin); /* vide le tampon temp du clavier ( force le programme a ce que
l'utilisateur tape quelle que chose au clavier) pas obligatoire de l'ecrire mais recommandé */
scanf("%d" , &b);
printf("la valeur entree est: %d \n" , b);
res1= somme;
res2= sommet;
{
if (res1 somme && res2 sommet)
printf("les deux nombres choisis sont des nombres amis");
else
printf("les deux nombres choisis ne sont pas des nombres amis");
return 0;
}
}
int div_a (int a)
{
int diviseur, somme = 1;
for (diviseur = 2;diviseur <= a/2; diviseur ++)
{
if (a%diviseur == 0) /* Si c'est un diviseur, je l'ajoute */
somme = somme + diviseur;
return somme;
}
}
int div_b (int b)
{
int diviseurt, sommet = 1;
for (diviseurt = 2;diviseurt <= b/2; diviseurt ++)
{
if (b%diviseurt == 0) /* Si c'est un diviseur, je l'ajoute */
sommet = sommet + diviseurt;
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023124 2 nov. 2010 à 10:53
Beaucoup trop d'erreur pour que je puisse te corriger sans te faire ton exercice.
Donc je vais plutôt lister les erreurs que tu fais:
- Tu n'appelles jamais tes fonctions, donc c'est normal qu'il ne se passe rien
- Pourquoi avoir écris deux fois la même fonction ? Je pense que tu ne dois pas savoir que des arguments de fonctions sont passés par copies. De plus tu dois mal maîtriser la notions de variables locales.
Ex:
#include <stdio.h>
void ma_fonction(int b)
{
printf("%i\n", b); // Affichera donc 9;
b = 20 + b;
printf("%i\n", b); // Affichera donc 29;
}
void autre_fonction(int a)
{
a = 30 + a;
printf("%i\n", a); // Affichera donc 39;
}
void test_fonction(void)
{
int a = 150; // Variable locale à la fonction test_fonction
printf("%i\n", a); // Affichera donc 150;
}
int main()
{
int a = 9;
ma_fonction(a);
printf("%i\n", a); // Affichera 9;
autre_fonction(a);
printf("%i\n", a); // Affichera 9;
test_fonction();
printf("%i\n", a); // Affichera 9;
return 0;
}
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question