Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kostia10
2 / 2 / 0
Регистрация: 17.11.2013
Сообщений: 33
#1

Найти ошибочку. Нахождение суммы цифр вещественного числа - C++

08.06.2014, 09:17. Просмотров 219. Ответов 1
Метки нет (Все метки)

Всем привет! Создал функцию нахождения суммы цифр вещественного числа. Функция практически работает, но, когда я кладу в переменную число н-р: "1.256" почему-то добавляются к числу девятки т.е. становится так: "1.2569999999"
b т.к. девятки тоже суммируются, ответ получается не верным.
Помогите, пожалуйста, как можно исправить это.
Код функции:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int fun(double n)
{
    int t, p, sum1 = 0, sum2 = 0, sum = 0;
    double z, intptr;
    t = (int)n;
    z = n - t;
    while (t)
    {
        sum1 += t % 10;
        t /= 10;
    }
 
    while (modf(z, &intptr) != 0)
    {
        z *= 10;
    }
    p = (int)z;
    while (p)
    {
        sum2 += p % 10;
        p /= 10;
    }
    sum = sum1 + sum2;
 
    return sum;
}
Код ее использования:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<iostream>
#include<math.h>
using namespace std;
int main(void)
{
    float a;
    int t = 0, d;
    cout << Rus("Введите вещественное число:\n");
    cin >> a;
    d = fun(a);
    cout << Rus("Сумма цифр вещественного числа равна ") << abs(d) << "\n";
    return(0);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2014, 09:17     Найти ошибочку. Нахождение суммы цифр вещественного числа
Посмотрите здесь:

C++ Определить, есть ли среди k-первых цифр дробной части вещественного числа цифра 0
C++ Даны два натуральных числа a, b. Найти разность и произведение суммы цифр этих чисел
C++ Найти все натуральные числа от 1 до n, суммы квадратов цифр которых равна самому числу
Найти квадрат суммы цифр двуцифрового натурального числа C++
C++ Найти в массиве количество простых чисел,больших суммы цифр первого числа
C++ Задача найти сумму первых трех цифр дробной части вещественного числа
Найти сумму цифр вещественного числа, введенного пользователем C++
C++ Определить, встречается ли введенная цифра M среди первых трёх цифр дробной части вещественного числа P
Найти все натуральные числа, меньшие n, квадрат суммы цифр которых равен m C++
C++ Напечатать произведение трех первых цифр после десятичной точки вещественного числа, веденного с клавиатуры
C++ В интервале найти натуральные числа равные кубу суммы своих цифр
Нахождение минимальной суммы цифр из 2х чисел C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
azbest
41 / 41 / 8
Регистрация: 12.03.2013
Сообщений: 148
08.06.2014, 13:18     Найти ошибочку. Нахождение суммы цифр вещественного числа #2
Добавим немного читерства))
Прочитаем число в строку и будем перебирать символы. Если не разделительный знак ".", то прибавляем к сумме код символа-48 ("0"-48, "1"-49, ... ).

Зачем так? Потому что вещественные числа сохраняються в памяти компа "по своим хитрым правилам", например число 1.23 будет 1.2299999... пока хватает розрядности)) или 34.56 -- 34.56000000001 и т.д.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string s;
    cout<<"enter number ";
    cin>>s;
    int summ_digits=0,i=0;
    for(;i<s.length();++i) {
        if (s[i]!='.') summ_digits += s[i]-48;
    }
    cout<<summ_digits<<endl;
    return 0;
}
Yandex
Объявления
08.06.2014, 13:18     Найти ошибочку. Нахождение суммы цифр вещественного числа
Ответ Создать тему
Опции темы

Текущее время: 04:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru