Besoin d'aide en C
Fermé
LaDroite
Messages postés
27
Date d'inscription
jeudi 31 mai 2018
Statut
Membre
Dernière intervention
21 mai 2024
-
Modifié le 7 juin 2018 à 15:42
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 8 juin 2018 à 01:27
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 8 juin 2018 à 01:27
2 réponses
Pinzou76
Messages postés
614
Date d'inscription
dimanche 17 septembre 2017
Statut
Membre
Dernière intervention
25 février 2019
191
7 juin 2018 à 12:09
7 juin 2018 à 12:09
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
Pinzou76
Messages postés
614
Date d'inscription
dimanche 17 septembre 2017
Statut
Membre
Dernière intervention
25 février 2019
191
Modifié le 7 juin 2018 à 14:35
Modifié le 7 juin 2018 à 14:35
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
LaDroite
Messages postés
27
Date d'inscription
jeudi 31 mai 2018
Statut
Membre
Dernière intervention
21 mai 2024
1
7 juin 2018 à 15:30
7 juin 2018 à 15:30
Bonjour
Avec ces codes le programme s'emballe c'est à dire, il montre le nombre entrée sans s'arrêté.
Avec ces codes le programme s'emballe c'est à dire, il montre le nombre entrée sans s'arrêté.
Pinzou76
Messages postés
614
Date d'inscription
dimanche 17 septembre 2017
Statut
Membre
Dernière intervention
25 février 2019
191
7 juin 2018 à 15:44
7 juin 2018 à 15:44
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; }
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
8 juin 2018 à 01:27
8 juin 2018 à 01:27
@Pinzou76: math.h n'est pas nécessaire pour utiliser l'opérateur modulo
Modifié le 7 juin 2018 à 15:43
7 juin 2018 à 14:22
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.