Найти и вывести сумму всех дробных чисел в строке - C (СИ)
Формулировка задачи:
Найти и вывести сумму всех дробных чисел в строке. Размер строки 80. Вводится пользователь, но проблема в нахождении самих дробных чисел. Вот часть кода, который что то делает, но очень плохо:
lenstr = strlen(str); for (i = 0; i < lenstr; i++) { char num = str[i]; if ((isdigit(num) && str[i+1] == '.' && isdigit(str[i+2])) || ('-' == num && isdigit(str[i+1]) && str[i+2] == '.' && isdigit(str[i+3]))) { float number = atof(str + i); count = printf("%f", number); i += count - 1; sumstr = sumstr + number; printf(" Сума всіх дробових чисел: %f", (float)sum); } }
Решение задачи: «Найти и вывести сумму всех дробных чисел в строке»
textual
Листинг программы
double getn(char *b) { double n=0; if(*b && strchr(b,'.')) { n=atof(b); if(n) printf("%lf\n",n); } return n; } void main(int argc,char* argv[]) { char str[81]; char *b,*e; double sum=0; printf("enter the string : "); gets(str); b=str; while(e=strchr(b,' ')) { *e=0; sum+=getn(b); b=e+1; } sum+=getn(b); printf("sum %lf\n",sum); system("pause"); }
Объяснение кода листинга программы
- В функции getn, первым делом, проверяется условие, что следующий символ в строке не равен нулю и в строке есть точка.
- Если условие выполняется, то из строки преобразуется в формат double с помощью функции atof.
- Если полученное значение не равно нулю, то оно выводится на экран с помощью функции printf.
- В функции main, первым делом, пользователю предлагается ввести строку.
- Затем, введенная строка сохраняется в массив str.
- Далее, с помощью функции gets, строка сохраняется в переменную b.
- Затем, с помощью цикла while, из строки удаляются все пробелы и добавляются в сумму с помощью функции getn.
- В конце, к сумме прибавляется значение функции getn для последнего числа в строке.
- Выводится на экран значение суммы с помощью функции printf.
- В конце программы, с помощью функции system, вызывается программа pause, чтобы программа не закрылась сразу после вывода суммы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д