Exercice 8.19
#include <stdio.h>
#include <math.h>
#include <ctype.h>
main()
{
/* Déclarations */
char CH[100]; /* chaîne numérique à convertir */
double N; /* résultat numérique */
int I; /* indice courant */
int SIG; /* signe de la valeur rationnelle */
int DEC; /* nombre de décimales */
int OK; /* indicateur logique précisant si la */
/* chaîne a été convertie avec succès */
/* Saisie de la chaîne */
printf("Entrez un nombre rationnel : ");
gets(CH);
/* Conversion de la chaîne : */
/* Initialisation des variables */
OK=1;
N=0.0;
I=0;
SIG=1;
/* Traitement du signe */
if (CH[I]=='-') SIG=-1;
if (CH[I]=='-' || CH[I]=='+')
I++;
/* Positions devant le point décimal */
for ( ; isdigit(CH[I]); I++)
N = N*10.0 + (CH[I]-'0');
/* Traitement du point décimal */
if (CH[I]=='.')
I++;
else if (CH[I])
OK=0;
/* Traitement et comptage des décimales */
for (DEC=0; isdigit(CH[I]); I++, DEC++)
N = N*10.0 + (CH[I]-'0');
if (CH[I]) OK=0;
/* Calcul de la valeur à partir du signe et */
/* du nombre de décimales. */
N = SIG*N/pow(10,DEC);
/* Affichage de la chaîne convertie */
if (OK)
printf("Valeur numérique : %f\n", N);
else
printf("\a\"%s\" n'est pas une valeur "
"rationnelle correcte.\n", CH);
return 0;
}
Feedback - Copyright © 1993,1996,1997 F.Faber