Найти сумму чисел, записанных в виде строки - C (СИ)
Формулировка задачи:
Помогите пожалуйста, в строке записаны вещественные числа, которые разделены пробелами. Найти сумму этих чисел.
В общем есть часть программы, но ф-ия atof считывает всего одно вещ. число, как зациклить эту ф-ию чтобы с каждого прохода она считывала новое значение и прибавляло к предыдущему?
#include <stdio.h> #include <stdlib.h> double atof1 (const char s[]) { double val, power; int i, sign; for (i = 0; s[i]<=' '; i++); sign = (s[i] == '-') ? -1 : 1; if (s[i] == '+' || s[i] == '-') i++; for (val = 0.0; (s[i]>='0')&&(s[i]<='9'); i++) val = 10.0 * val + (s[i] - '0'); if (s[i] =='.') i++; for (power = 1.0; (s[i]>='0')&&(s[i]<='9'); i++) { val = 10.0 * val + (s[i] - '0'); power *= 10.0; } return sign * val / power; } int main() { char s1[50]; double x; gets(s1); x=atof1(s1); printf ("%f", x); getchar (); return 0; }
Решение задачи: «Найти сумму чисел, записанных в виде строки»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> double atof1 (char **s) { double val, power; int sign; for (; *(*s)<=' '; (*s)++); if (*(*s) == 0) return 0; sign = (*(*s) == '-') ? -1 : 1; if (*(*s) == '+' || *(*s) == '-') (*s)++; for (val = 0.0; (*(*s)>='0')&&(*(*s)<='9'); (*s)++) val = 10.0 * val + (*(*s) - '0'); if (*(*s) =='.') (*s)++; for (power = 1.0; (*(*s)>='0')&&(*(*s)<='9'); (*s)++) { val = 10.0 * val + (*(*s) - '0'); power *= 10.0; } return sign * val / power; } int main() { char s1[50] = "123.34 45.6"; char *s2 = s1; double x=0; while(*s2 != 0) x += atof1(&s2); printf ("%f", x); getchar (); return 0; }
Объяснение кода листинга программы
- В функции atof1() происходит преобразование строки в число.
- В функции main() определяется входная строка s1, содержащая
123.34 45.6
, и создается указатель s2 на первый символ этой строки. - Переменная x инициализируется значением 0.
- В цикле while происходит чтение строки до конца с помощью указателя s2 и добавление каждой прочитанной строки к x с помощью функции atof1().
- После окончания цикла выводится значение x с помощью функции printf().
- В конце программы вызывается функция getchar(), чтобы программа не закрылась сразу после вывода, и возвращается 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д