exercice programmation nombre amis en C

cs_bibou1234 Messages postés 5 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 1 novembre 2010 - 1 nov. 2010 à 16:51
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 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?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int div_a (int a);
int div_b (int b);


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;

return sommet;


}
}


Merci

1 réponse

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
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/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
Rejoignez-nous