hazertyck
Messages postés2Date d'inscriptionjeudi 1 mai 2008StatutMembreDernière intervention 4 mars 2010
-
4 mars 2010 à 18:50
hazertyck
Messages postés2Date d'inscriptionjeudi 1 mai 2008StatutMembreDernière intervention 4 mars 2010
-
4 mars 2010 à 22:27
Bonjour, je suis etudiant en première année d'informatique à la fac. J'ai ici un exercice de tp en C dont l'énoncé est le suivant et où mon code est buggé :
deux nombres entier positifs sont dits amis si la chacun est égal à la somme des deviseurs propres de l'autre plus un.
(il y as un exemple avec 220 et 284 où les diviseurs propres de 220 sont 2,4,5,10,11,20,22,44,55,110 et ceux de 284 sont 2,4,71,142 )
Il me faut écrire une fonction C (int sommeDiviseursPropres(int n) qui calcule la somme des diviseurs d'un entier n, et une fonction int ami( int a, int b) qui renvoie 1 si a et b sont amis, sinon qui renvoi 0.
enfin, je doit faire une fontion principale (main) qui permette de tester l'ensemble.
j'ai écrit ce code :
int sommeDiviseursPropres(int n)
{
int a,i;
a=0;
for (i=2 ; i<n ; i++){
if (n%i==0)
a+=i;
}
return a;
}
int ami(int a, int b)
{
if (b==sommeDiviseursPropres(a) && a==sommeDiviseursPropres(b))
return 1;
else
return 0;
}
int main()
{
int a,b;
a=lire_entier();
b=lire_entier();
if ami(a,b)==1
printf("%d et %d sont bien amis \n" a,b);
else
printf("%d et %d ne sont pas amis \n" a,b);
return 0;
}
et le débuggeur me dit :
In function 'main' :
line 29 error : syntax error before "ami"
la ligne 29 est celle où j'apelle ami, j'ai mis :
if ami(a,b)==1
hazertyck
Messages postés2Date d'inscriptionjeudi 1 mai 2008StatutMembreDernière intervention 4 mars 2010 4 mars 2010 à 22:27
bon bah j'ai trouvé ce qui n'allais pas en fait , donc voici ma main :
int main()
{
int a,b;
a=lire_entier();
b=lire_entier();
if ((ami(a,b))==1)
printf("%d et %d sont bien amis \n",a,b);
else
printf("%d et %d ne sont pas amis \n",a,b);
return 0;
}