exercice programmation nombre amis en C

Signaler
Messages postés
5
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
1 novembre 2010
-
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
-
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

Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
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