Exercice langage C : while Erreur

Que fait ce programme ?

#include
#include
#define debut 100
#define pas 0.01
int main(void)
{
float nombre=debut;
int compte=0,tous_les;
puts("afficher les résultats intermédiaires
tous les ? (333 par exemple) ?");
scanf("%d",&tous_les);
while (fabs(nombre-(debut+(compte*pas))){
nombre+=pas;
if (!(++compte%tous_les))
printf("valeur obtenue %12.8f, au lieu de %6.2f en %d calculs\n",
nombre,(float)(debut+(compte*pas)), compte);
}
printf("erreur de 100%% en %d calculs\n",compte);

Ce programme démontre les erreurs de calcul toujours effectuées sur des nombres réels.
On additione successivement 0.01 (qui n'a pas de représentation finie en binaire) à un réel initialement nul.
On compte le nombre de calculs jusqu'à obtenir une erreur de 100%.
Dans ce cas il faut 16246 calculs.
On peut essayer d'autres pas et d'autres débuts.

Article publié le 19 Février 2012 Mise à jour le Samedi, 17 Décembre 2022 22:21 par GC Team