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