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

Посчитать сумму цифр double - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ в одномерном массиве, элементы которого- целые числа, произвести действие: http://www.cyberforum.ru/cpp-beginners/thread456223.html
Вставить новый элемент после всех элементов, кратных своему номеру.
C++ Для каждого столбца найти первый положительный элемент и записать данные в новый массив Дан массив размером nxn, элементы которого целые числа Для каждого столбца найти первый положительный элемент и записать данные в новый массив http://www.cyberforum.ru/cpp-beginners/thread456221.html
C++ Для заданного натурального k и действительного х подсчитать сумму
\sum_{n-1}^{k}\frac{{(-1)}^{n}{x}^{n}}{{2}^{n}7n}
Метод деления пополам C++
плиз!!!подскажите!!! нам дана функция х*х-2=0,мы знаем отрезок на котором будем искать иксы, эпселон=10 в минус шестой степени,будем искать иксы методом деления пополам!получаю ответ, но не такой!точно не знаю ответ, но знаю, что он состоит из единиц и четверок(четверки там точно присутствуют) посмотрите может, что не так? # include <iostream> # include <windows.h> # include <conio.h> #...
C++ Как перегрузить ">>" в приложенном коде http://www.cyberforum.ru/cpp-beginners/thread456218.html
как собстно перегрузить >> в данном примере? #include <iostream> #include <cstring> using namespace std; class Person { public: Person()
C++ Вычислить бесконечную сумму ряда с заданной точностью е (е>0) \sum_{i=1}^{\propto }\frac{{(-1)}^{i+1}}{2i!} подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
02.03.2012, 09:55     Посчитать сумму цифр double
Вот «решение» задачи через разбор строки с помощью простого автомата (число задается с необязательным знаком и дробной частью, без лидирующих и завершающих пробельных символов):
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
int main(int argc, char* argv[])
{
    int state = 0;
    int integral = 0;
    int fractional = 0;
    int ret = 0;
 
    char* number;
    
    if(argc != 2)
    {
    fprintf(stderr, "Usage: %s FLOATING\n", argv[0]);
    ret = 1;
    goto ex;
    }
 
    number = argv[1];
    
    while(*number != '\0')
    {
    char c = *number++;
        
    switch(state)
    {
    case 0:
        if(isdigit(c))
        {
        integral += c - '0';
        state = 2;
        }
        else if(c == '-' || c == '+')
        state = 1;
        else
        goto noparse;
        
        break;
        
    case 1:
        if(isdigit(c))
        {
        integral += c - '0';
        state = 2;
        }
        else
        goto noparse;
        
        break;
 
    case 2:
        if(isdigit(c))
        integral += c - '0';
        else if(c == '.')
        state = 3;
        else
        goto noparse;
 
        break;
 
    case 3:
    case 4:
        if(isdigit(c))
        {
        fractional += c - '0';
        state = 4;
        }
        else
        goto noparse;
        
        break;
        
    default:
        fprintf(stderr, "Unknown state %d\n", state);
        ret = 1;
        goto ex;
    }
    }
 
    if(state == 2 || state == 4)
    {
    printf("Given a floating-point number %s;"
           " sum of digits in integral part %d;"
           " sum of digits in fractional part %d\n",
           argv[1], integral, fractional);
    goto ex;
    }
    
 noparse:
    fprintf(stderr, "%s: no parse (state = %d)\n", argv[1], state);
    ret = 1;
    
 ex:
    exit(ret);
}
Если нужно, чтобы число обязательно задавалось с дробной частью, то тогда нужно оставить в строке 82 единственное допустимое завершающее состояние 4
 
Текущее время: 00:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru