Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
2 / 0 / 0
Регистрация: 17.11.2013
Сообщений: 33
1

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

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

Author24 — интернет-сервис помощи студентам
Всем привет! Создал функцию нахождения суммы цифр вещественного числа. Функция практически работает, но, когда я кладу в переменную число н-р: "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);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2014, 09:17
Ответы с готовыми решениями:

дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти количество чётных цифр в записи числа!!
дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти...

Найти суммы цифр каждого числа без учета повторяющихся цифр. Повторяющиеся суммы удалить.
Найти суммы цифр каждого числа без учета повторяющихся цифр. Повторяющиеся суммы удалить.

Нахождение суммы цифр числа
Дано задание: Вводится последовательность целых чисел. Найти сумму цифр каждого числа. На...

Вычисление суммы цифр целого числа (нахождение суммы цифр целого числа)
Составить и отладить программу, используя указанные в скобках процедуры или функции: Вычисляющую...

1
42 / 42 / 18
Регистрация: 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;
}
1
08.06.2014, 13:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2014, 13:18
Помогаю со студенческими работами здесь

Рекурсия: нахождение суммы цифр числа
Создать программу с помощью рекурсивного алгоритма. Нужно чтобы программа считала сумму вводимого...

Нахождение суммы цифр заданного натурального числа
скажите, пожалуйста, как написать скрипт, который будет находить сумму цифр заданного натурального...

Нахождение суммы цифр заданного трехзначного числа
условие задачи: найдите сумму цифр заданного трехзначного числа.

Нахождение суммы цифр числа от старших разрядов
Я понимаю, что это должно быть очень просто, но я только начал учить VB (учусь в школе). Мне задали...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru