#include <stdio.H>

#include <string.h>

#include <math.h>

#include <ctype.h>

 

float getnum(char *prmpt, int *err);

 

main()

{

  float num;

  int err;

 

  do {

    num = getnum("Input a number: ", &err);

    printf("The number is %f\n", num);

  } while (! err);

  return 0;

}

 

float getnum(char *prmpt, int *err)

{

  char *s, *s2, str[80], ss;

  float num, d;

  int n;

  int sign = 1;

  int decimal = 0;

 

  *err = 0;

  printf(prmpt);

  gets(str);

  printf("|%s|\n", str);

  for(s=str; *s && *s == ' '; s++) ;

  switch(*s) {

    case '+':

      sign = 1;

      s++;

      break;

    case '-':

      sign = -1;

      s++;

      break;

  }

  if (*s == '.') {

    decimal = 1;

    s++;

  }

  printf("|%s|\n", s);

  if (! isdigit(*s)) {

    *err = 1;

    return 0.0;

  }

  for (s2=s; *s2 && isdigit(*s2); s2++) ;

  ss = *s2; *s2 = 0;

  n = (int)(s2 - s);

  num = atoi(s);

  if (decimal) {

    num /= pow(10, n);

  } else if (ss == '.') {

    s=s2+1;

    for (s2=s; *s2 && isdigit(*s2); s2++) ;

    ss = *s2; *s2 = 0;

    n = (int)(s2 - s);

    d = atoi(s);

    d /= pow(10, n);

    num += d;

  }

  return (sign * num);

}