feat: solve 5-2
This commit is contained in:
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