Besoin d'aide en C
LaDroite
Messages postés
27
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je cherche les code d'un programme en C qui divise un nombre pair jusqu'au reste 0 et compter le nombre de fois ce nombre a été divisé. Exemple 8 est divisible par 2 3 fois.
Ce que je tenter écrire ne donne pas :
Je cherche les code d'un programme en C qui divise un nombre pair jusqu'au reste 0 et compter le nombre de fois ce nombre a été divisé. Exemple 8 est divisible par 2 3 fois.
Ce que je tenter écrire ne donne pas :
#include <stdio.h> #include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) { int a,b,nb; printf("entrer un nombre paire a\n"); scanf("%d",&a); if("a MOD 2 = 0"); b=0; nb=a; do printf("%d\n",a); while("nb MOD 2=0"); nb=nbdiv2; a=a+1; return 0; }
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
2 réponses
Bonjour,
Attention avec les tests de condition en C.
affecte la valeur 0 à a, ça ne teste pas si a est égal à 0 !
Il faut remplacer par des double égal
Idem pour le While:
Enlevez également les guillemets dans les If et While.
De plus, vous mettez des points virgules à la fin des if et des while, ce qui termine la boucle...
Il faut procéder comme ceci:
Même procédé pour le While.
Voilà pour la syntaxe, pour le fonctionnement je n'ai pas testé si vos calculs sont bons.
Bon courage
Attention avec les tests de condition en C.
If(a=0)
affecte la valeur 0 à a, ça ne teste pas si a est égal à 0 !
Il faut remplacer par des double égal
If(a==0)
Idem pour le While:
while(nb MOD 2==0)
Enlevez également les guillemets dans les If et While.
De plus, vous mettez des points virgules à la fin des if et des while, ce qui termine la boucle...
Il faut procéder comme ceci:
If(a MOD 2 == 0) { //Ce chevron symbolise le début du if //Mettre entre les 2 chevrons les instructions //qui seront effectuées //à chaque passage dans le if } //Ce chevron symbolise la fin de la boucle if
Même procédé pour le While.
Voilà pour la syntaxe, pour le fonctionnement je n'ai pas testé si vos calculs sont bons.
Bon courage
int main(int argc, char *argv[]) { int a,nb; printf("entrez un nombre pair a\n"); scanf("%d",&a); while(a%2==0) //tant que a est divisible par 2 { a=a/2; //On divise a par 2 nb++; //On incrémente le compteur de 1 (ça revient à nb=nb+1) } printf("%d est divisible %d fois par 2",a,nb); //affiche "a est divisible nb fois par 2 return 0; }
Ce code fonctionne-t-il et est-ce qu'il vous convient ?
[EDIT] Il faudra peut-être include la bibliothèque <math.h> pour que le "%" fonctionne
Alors c'est que vous avez mal recopié, pour moi ça marche parfaitement...
(rajout de la variable TEMP pour garder a à la fin)
(rajout de la variable TEMP pour garder a à la fin)
int main(int argc, char *argv[]) { int a,nb, temp; printf("entrez un nombre pair a\n"); scanf("%d",&a); temp=a; while(temp%2==0) //tant que a est divisible par 2 { temp=temp/2; //On divise a par 2 nb++; //On incrémente le compteur de 1 (ça revient à nb=nb+1) } printf("%d est divisible %d fois par 2",a,nb); //affiche "a est divisible nb fois par 2 return 0; }
Ensuite, dans la ligne
Le MOD correspond au reste de la division euclidienne ? Si oui, utilisez plutôt
Et enlevez les guillemets ! Pareil dans le While
Ensuite
Que voulez-vous faire ici ? La division entière de nb par 2 ? Si oui:
fonctionnera très bien puisque le résultat retourne un entier.
Merci d'utiliser les balises code fournies par CCM pour rendre le code plus lisible.