Code correct?
Fermé
jaouabi
Messages postés
5
Date d'inscription
mardi 8 novembre 2016
Statut
Membre
Dernière intervention
10 novembre 2016
-
Modifié par Judge_DT le 8/11/2016 à 15:33
CrazyGeekMan Messages postés 873 Date d'inscription dimanche 1 novembre 2015 Statut Membre Dernière intervention 26 novembre 2024 - 8 nov. 2016 à 21:07
CrazyGeekMan Messages postés 873 Date d'inscription dimanche 1 novembre 2015 Statut Membre Dernière intervention 26 novembre 2024 - 8 nov. 2016 à 21:07
A voir également:
- Code correct?
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
2 réponses
CrazyGeekMan
Messages postés
873
Date d'inscription
dimanche 1 novembre 2015
Statut
Membre
Dernière intervention
26 novembre 2024
136
Modifié par CrazyGeekMan le 8/11/2016 à 15:06
Modifié par CrazyGeekMan le 8/11/2016 à 15:06
Salut,
Je n'ai pas trop compris le fonctionnement du programme ^^
En tout cas, si tu met int i alors tu dois mettre scanf("%d",&i)
Et pour float x, tu dois mettre printf("%f",&x)
Je n'ai pas trop compris le fonctionnement du programme ^^
En tout cas, si tu met int i alors tu dois mettre scanf("%d",&i)
Et pour float x, tu dois mettre printf("%f",&x)
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
Modifié par jisisv le 8/11/2016 à 17:08
Modifié par jisisv le 8/11/2016 à 17:08
Ceci fonctionnera mieux:
Vu la représentation de floats/double sur un ordinateur, tu ne peux pas utiliser la comparaison == / !=
Gates gave ^W sold you the windows.
GNU gave us the whole house.(Alexandrin)
#include <stdio.h> #include <math.h> #define epsilon 1.0e-6 int main() { float x, s, moy; int i; scanf("%f", &x); s=0; i=0; while ( fabs( (x - 12.34) /12.34 ) > epsilon ) { s += x; scanf("%f", &x); i++; } if ( i ) { moy = s / i; printf ("Moyenne : %f\n",moy); } return 0; }
Vu la représentation de floats/double sur un ordinateur, tu ne peux pas utiliser la comparaison == / !=
Gates gave ^W sold you the windows.
GNU gave us the whole house.(Alexandrin)
jaouabi
Messages postés
5
Date d'inscription
mardi 8 novembre 2016
Statut
Membre
Dernière intervention
10 novembre 2016
8 nov. 2016 à 17:14
8 nov. 2016 à 17:14
merci pour mais esque il ya une solution possible avec la boucle while seulement car je ne peux pas utiliser la "define epsilon" dans les examens et merci d'ava,ce
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
8 nov. 2016 à 17:57
8 nov. 2016 à 17:57
Essaye :
#include <stdio.h> #include <math.h> const float epsilon = 1.0e-6;
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié par [Dal] le 8/11/2016 à 19:05
Modifié par [Dal] le 8/11/2016 à 19:05
Comment sais tu la valeur de epsilon pour son implémentation ?
Si l'on veut bien faire, à mon sens https://forums.commentcamarche.net/forum/affich-34074667-code-correct#5
Epsilon est une constante définie pour chaque type flottant dans float.h
Pour un float, la constante est FLT_EPSILON
Cette constante est définie depuis le standard C89, et sa valeur dépend de l'implémentation, le standard ne fixant qu'une valeur 1E-5 maximale, la valeur réelle pouvant être plus petite (donc la précision plus grande).
Voir le standard (Annexe A.4) + aussi http://www.cplusplus.com/reference/cfloat/
Si l'on veut bien faire, à mon sens https://forums.commentcamarche.net/forum/affich-34074667-code-correct#5
Epsilon est une constante définie pour chaque type flottant dans float.h
Pour un float, la constante est FLT_EPSILON
Cette constante est définie depuis le standard C89, et sa valeur dépend de l'implémentation, le standard ne fixant qu'une valeur 1E-5 maximale, la valeur réelle pouvant être plus petite (donc la précision plus grande).
Voir le standard (Annexe A.4) + aussi http://www.cplusplus.com/reference/cfloat/
8 nov. 2016 à 15:29
8 nov. 2016 à 16:09
%i n'existe pas :/
Modifié par [Dal] le 8/11/2016 à 16:23
http://www.cplusplus.com/reference/cstdio/scanf/
cependant, c'est plutôt que devrait utiliser jaouabi car le paramètre passé est un pointeur sur float.
ensuite il y a d'autres problèmes liés au fait qu'il tente de comparer un float avec un littéral qui est de type double par défaut... alors sa comparaison devrait être plutôt pour préciser expressément que ce littéral est un float ... cela dit la précision de représentation des nombres flottants fait que ce genre de comparaisons est hasardeuse.
Voir https://stackoverflow.com/questions/8266878/why-floating-point-value-conditions-failed-in-if-condition
par ailleurs, il risque une division par zéro aussi car est mal incrémenté.
8 nov. 2016 à 21:07
Désolé et merci pour cette nouveauté pour moi :)
8 nov. 2016 à 16:31
Epsilon est une constante définie pour chaque type flottant dans float.h
Pour un float, la constante est FLT_EPSILON