Déjà ce que tu souhaites récupérer, c'est si le nombre rentré, donc a, est divisible par 2,3,4,etc.
Prenons ce que tu as fait :
if(8%a ==0) ==>ici le reste qui sortira du modulo viendra de la division de 8 par a, et non pas de a par 8.
donc déjà pour tout nombre par lequel tu veux diviser a, il te faut mettre a%x où x représnte le nombre que tu veux, 2 ,3,4,5, etc...
Ensuite le deuxième problème vient de ta boucle else : lorsque tu fais le if, si la condition placée entre parenthèses est fausse, il passe à la suivante avec le else nous sommes d'accord.
Cependant, si la condition du else if est vrai, il ne continuera pas plus loin !!! par exemple si on rentre comme nombre 24, qui est divisible par deux, trois et quatre,6 et 8, lorsqu'il fera la boucle "else if (a%4==0)" et comme cela est vrai, alors il ne continuera pas à tester avec 5,6,7,8,9. Donc tu vas louper des nombres !!!
Voici le code que je te propose :
#include <stdlib.h>
#include <stdio.h>
int main (void)
{
int a;
bool existe=false;
printf("entrez le nombre:");
scanf("%d",&a);
while(a==0)
{
printf("veuillez entrez un nombre superieur a 0\n");
scanf("%d",&a);
}
if (((a%2) == 0) && ((3%a) == 0))
{
printf("le nombre est divisible par deux et trois");
existe = true;
}
if (a%2 == 0)
{ printf("le nombre est divisible par deux\n");
existe = true;
}
if (a%3 == 0)
{ printf("le nombre est divisible par trois\n");
existe = true;
}
if (a%4 == 0)
{ printf("le nombre est divisible par quatre\n");
existe = true;
}
if (a%5 == 0)
{ printf("le nombre est divisible par cinq\n");
existe = true;
}
if (a%6 == 0)
{ printf("le nombre est divisible par six\n");
existe = true;
}
if (a%7 == 0)
{ printf("le nombre est divisible par sept\n");
existe = true;
}
if (a%8 == 0)
{ printf("le nombre est divisible par huit\n");
existe = true;
}
if (a%9 == 0)
{ printf("le nombre est divisible par neuf\n");
existe = true;
}
if(!existe)
{ printf("il n'est pas divisible par les nombre de 2 a 9\n");
}
system("PAUSE");
}
Dans ce code j'ai donc inversé les nombres et a dans le modulo, pour qu'un premier problème soit résolu, que 'lon ait le reste de la division de a par le nombre et pas l'inverse.
Ensuite au départ j'ai rajouté une boucle while, que tu peux supprimé bien sur, mais cela évite que lutilisateur qui rentre 0 fasse planter le programme.
A la fin du programme j'ai rajouté system("PAUSE"); pour que celui-ci se mette en pause jusqu'a ce que tu appuies sur une touche.
La nouveauté vient de la variable "existe", que j'ai rajouté, car le "else" à la fin de ton code pour dire que ce n'est pas divisible n'était plus bon.
Cette variable est par défaut mise à "faux" (false). Ensuite, lorsque le programme test le nombre "a" avec chaque nombre à diviser, si la division est bonne alors il met la variable "existe" à "vrai" (existe=true).
Ensuite toute à la fin tu as la boucle (if(!existe)) qui te dira si le nombre "a" n'est pas divisible. En effet le "if(!existe)" signifie que si "existe" est à "faux" et donc que le nombre a entré est non divisible, la boucle s'exécute.
Note : Par opposition,si le test était if(existe), cela signifierait que si la variable existe était placée à "vraie", alors la boucle s'exécuterait.
Dis moi si tu as un truc que tu ne comprends pas.
Loup.
Le loup, solitaire et mystérieux.