Previous Next Up Index Contents

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;
}


Previous Next Up Index Contents

Feedback - Copyright © 1993,1996,1997 F.Faber