Files
first-repo/atof.c
2025-02-06 12:54:34 +02:00

49 lines
885 B
C

#include <ctype.h>
#include <stdio.h>
#define MAXLINE 100
int getlime(char s[], int lim)
{
int ch, i;
for (i = 0; i < lim - 1 && (ch = getchar()) != EOF && ch != '\n'; ++i)
s[i] = ch;
if (ch == '\n') {
s[i] = ch;
++i;
}
s[i] = '\0';
return i;
}
double atof(char s[]) {
double val, power;
int ind, sign;
for (ind = 0; isspace(s[ind]); ++ind) /* skip whitespace */
;
sign = (s[ind] == '-') ? -1 : 1;
if (s[ind] == '+' || s[ind] == '-')
++ind;
for (val = 0.0; isdigit(s[ind]); ++ind)
val = 10 * val + (s[ind] - '0');
if(s[ind] == '.')
++ind;
for (power = 1.0; isdigit(s[ind]); ++ind) {
val = 10.0 * val + (s[ind] - '0');
power *= 10;
}
return sign * val / power;
}
int main() {
double sum = 0;
char line[MAXLINE];
while (getlime(line, MAXLINE) > 0)
printf("\t%g\n", sum += atof(line));
return 0;
}