A voir également:
- [#C] Problème divisions parties décimales
- Diviser une image en plusieurs parties instagram - Guide
- Tableau vierge pour concours de pétanque en 4 parties - Forum compta / gestion
- Comment diviser une page word en 4 parties ✓ - Forum Matériel & Système
- 2 décimales après la virgule excel ✓ - Forum Programmation
- Faire 4 tirages aléatoires sur Excel - Forum Excel
7 réponses
nicocorico
Messages postés
799
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
138
Modifié par nicocorico le 25/09/2011 à 17:19
Modifié par nicocorico le 25/09/2011 à 17:19
Ha oui, c'est juste que tu veux afficher les décimales, je connais quasi rien au c, mais je crois qu'il suffit de modifier l'option d'affichage du PrintF...
Je pense que ça doit marcher comme ça, en remplaçant le d par f :
printf("%d / %d = %f \n", nombre1, nombre2, resultat);
Je pense que ça doit marcher comme ça, en remplaçant le d par f :
printf("%d / %d = %f \n", nombre1, nombre2, resultat);
nicocorico
Messages postés
799
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
138
24 sept. 2011 à 10:16
24 sept. 2011 à 10:16
Le reste d'une division est obtenu par modulo, qui s'écrit %, donc il te suffit de calculer : resultat = nombre1 % nombre2...
Après correction :
// déclaration des variables
int nombre1 = 0;
int nombre2 = 0;
int resultat = 0;
int reste = 0;
// on entre les nombres 1 et 2
printf("nombre1 = ");
scanf("%d", &nombre1);
printf("nombre2 = ");
scanf("%d", &nombre2);
// calcul division + reste
resultat = nombre1 / nombre2;
reste = nombre1 % nombre2;
printf("%d / %d = %d,%d \n", nombre1, nombre2, resultat, reste);
------------------------------------------------------------------------------
5 / 2 = 2,1 (au lieu de 2,5)
// déclaration des variables
int nombre1 = 0;
int nombre2 = 0;
int resultat = 0;
int reste = 0;
// on entre les nombres 1 et 2
printf("nombre1 = ");
scanf("%d", &nombre1);
printf("nombre2 = ");
scanf("%d", &nombre2);
// calcul division + reste
resultat = nombre1 / nombre2;
reste = nombre1 % nombre2;
printf("%d / %d = %d,%d \n", nombre1, nombre2, resultat, reste);
------------------------------------------------------------------------------
5 / 2 = 2,1 (au lieu de 2,5)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
Modifié par KX le 25/09/2011 à 17:47
Modifié par KX le 25/09/2011 à 17:47
Non le %f c'est pour les types float, alors que le résultat est entier donc c'est bien %d.
Le problème n'est pas de l'ordre de la programmation mais des maths (de CE2 !)
Quand tu fais nombre1%nombre2 ça n'a jamais correspondu au nombre de chiffres après la virgules mais au reste de la division !
Si tu as 5 / 2 il est tout à fait normal d'avoir 2 pour quotient et 1 pour reste.
On vérifies ainsi l'égalité 5 = 2*2+1.
Pour obtenir le 0,5 qui correspond il faudrait faire le calcul 1/2 c'est à dire :
(double) (nombre1%nombre2)/nombre2
La confiance n'exclut pas le contrôle
Le problème n'est pas de l'ordre de la programmation mais des maths (de CE2 !)
Quand tu fais nombre1%nombre2 ça n'a jamais correspondu au nombre de chiffres après la virgules mais au reste de la division !
Si tu as 5 / 2 il est tout à fait normal d'avoir 2 pour quotient et 1 pour reste.
On vérifies ainsi l'égalité 5 = 2*2+1.
Pour obtenir le 0,5 qui correspond il faudrait faire le calcul 1/2 c'est à dire :
(double) (nombre1%nombre2)/nombre2
La confiance n'exclut pas le contrôle
nicocorico
Messages postés
799
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
138
Modifié par nicocorico le 25/09/2011 à 17:51
Modifié par nicocorico le 25/09/2011 à 17:51
oui bien sûr, pekzy à mal compris le sens du mot 'reste', mais il n'y a pas moyen d'afficher directement la partie décimale avec PrintF ?
Et la variable résultat est de type Double...
Et la variable résultat est de type Double...
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
25 sept. 2011 à 17:53
25 sept. 2011 à 17:53
C'est printf sans majuscule (le C est sensible à la casse)
Et si, on peut directement afficher la division réelle :
Et si, on peut directement afficher la division réelle :
printf("%d/%d=%lf",nombre1,nombre2, (double) nombre1/nombre2);
nicocorico
Messages postés
799
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
138
25 sept. 2011 à 17:59
25 sept. 2011 à 17:59
^^ je crois que c'est ça que pekzy cherchait...
Merci !
Après mettre renseigné,
il y a une différence entre le scanf et le printf pour afficher les décimales.
-----------------------------------------
double nombre1 = 0;
scanf("%lf", &nombre1);
printf("un nombre décimal : %f", nombre1);
--------------------------------------
scanf : on utilise "%lf"
printf : on utilise "%f"
désolé pour la confusion reste, décimal.
Je vais aller réviser un peut mes Maths moi.
Après mettre renseigné,
il y a une différence entre le scanf et le printf pour afficher les décimales.
-----------------------------------------
double nombre1 = 0;
scanf("%lf", &nombre1);
printf("un nombre décimal : %f", nombre1);
--------------------------------------
scanf : on utilise "%lf"
printf : on utilise "%f"
désolé pour la confusion reste, décimal.
Je vais aller réviser un peut mes Maths moi.
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
25 sept. 2011 à 18:00
25 sept. 2011 à 18:00
%f c'est pour les types float, %lf pour les types double.
dans ton exemple tu utilises double donc printf doit bien être %lf
Remarque : il y en a également d'autres %e par exemple pour la notation scientifique, ou alors en faisant des dérivées comme %.3lf pour n'afficher que 3 chiffres après la virgule...
dans ton exemple tu utilises double donc printf doit bien être %lf
Remarque : il y en a également d'autres %e par exemple pour la notation scientifique, ou alors en faisant des dérivées comme %.3lf pour n'afficher que 3 chiffres après la virgule...