parent
428a0b4287
commit
2d127ac61a
@ -0,0 +1,45 @@ |
||||
#include <ctype.h> |
||||
#include <stdio.h> |
||||
#define SIZE 100 |
||||
|
||||
int getfloat(double *pf) { |
||||
int c, sign, dec; |
||||
while (isspace(c = getchar())) /* ignore whitespace */ |
||||
; |
||||
if (c != EOF && c != '.' && c != '+' && c != '-' && !isdigit(c)) { |
||||
ungetc(c, stdin); // not a number
|
||||
return c; |
||||
} |
||||
sign = (c == '-') ? -1 : 1; |
||||
if (c == '+' || c == '-') |
||||
c = getchar(); |
||||
|
||||
for (*pf = 0; isdigit(c); c = getchar()) { |
||||
*pf = 10 * *pf + (c - '0'); |
||||
} |
||||
|
||||
if (c != '.' && c != EOF) { |
||||
ungetc(c, stdin); // not a number after decimal
|
||||
return c; |
||||
} |
||||
|
||||
if (c == '.') { |
||||
c = getchar(); |
||||
for (dec = 1; isdigit(c); c = getchar(), dec++) |
||||
*pf = *pf + (double)(c - '0') / (10 * dec); |
||||
} |
||||
|
||||
*pf *= sign; |
||||
|
||||
if (c != EOF) |
||||
ungetc(c, stdin); |
||||
return c; |
||||
} |
||||
|
||||
int main() { |
||||
int n; |
||||
double array[SIZE]; |
||||
for (n = 0; n < SIZE && getfloat(&array[n]) != EOF; n++) |
||||
; |
||||
printf("%lf", array[0]); |
||||
} |
Loading…
Reference in new issue