exercice programmation nombre amis en C

cs_bibou1234 5 Messages postés mercredi 24 février 2010Date d'inscription 1 novembre 2010 Dernière intervention - 1 nov. 2010 à 16:51 - Dernière réponse : cptpingu 3766 Messages postés dimanche 12 décembre 2004Date d'inscription 1 décembre 2017 Dernière intervention
- 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
Afficher la suite 
5Messages postés mercredi 24 février 2010Date d'inscription 1 novembre 2010 Dernière intervention

1 réponse

Répondre au sujet
cptpingu 3766 Messages postés dimanche 12 décembre 2004Date d'inscription 1 décembre 2017 Dernière intervention - 2 nov. 2010 à 10:53
0
Utile
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
Commenter la réponse de cptpingu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.