Найти и вывести сумму всех дробных чисел в строке - 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");
}

Объяснение кода листинга программы

  1. В функции getn, первым делом, проверяется условие, что следующий символ в строке не равен нулю и в строке есть точка.
  2. Если условие выполняется, то из строки преобразуется в формат double с помощью функции atof.
  3. Если полученное значение не равно нулю, то оно выводится на экран с помощью функции printf.
  4. В функции main, первым делом, пользователю предлагается ввести строку.
  5. Затем, введенная строка сохраняется в массив str.
  6. Далее, с помощью функции gets, строка сохраняется в переменную b.
  7. Затем, с помощью цикла while, из строки удаляются все пробелы и добавляются в сумму с помощью функции getn.
  8. В конце, к сумме прибавляется значение функции getn для последнего числа в строке.
  9. Выводится на экран значение суммы с помощью функции printf.
  10. В конце программы, с помощью функции system, вызывается программа pause, чтобы программа не закрылась сразу после вывода суммы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы