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

Найти суммы чисел, записанных в строке, между нулями - C++

Восстановить пароль Регистрация
 
atu
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 15
30.06.2015, 17:59     Найти суммы чисел, записанных в строке, между нулями #1
Дана строка чисел например: 1 2 4 0 4 4 5 0 32 21 35 0 3 0. Нужно найти суммы чисел между нулями. Но в С++ я новичек и не знаю как сие реализовать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2015, 17:59     Найти суммы чисел, записанных в строке, между нулями
Посмотрите здесь:

C++ Найти суммы элементов, записанных по диагоналям.
В одномерном массиве целых чисел содержится два нулевых значения. Подсчитать сумму чисел, заключённых между двумя нулями. C++
C++ Описать функцию Sum(t) для нахождения суммы наибольшего и наименьшего из чисел, записанных в текстовом файле
Матрица.В матрице A(6; 6) найти произведение суммы четных чисел в 3-ей строке и суммы отрицательных чисел 1-го столбца C++
Вывести сумму чисел из данного набора, расположенных между первыми двумя нулями C++
Ввести n положительных целых чисел. Найти количество чисел, записанных только четными цифрами C++
C++ Найти сумму чисел записанных в файл
Найти среднее арифметическое всех чисел записанных в файл C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Геомеханик
 Аватар для Геомеханик
517 / 324 / 253
Регистрация: 26.06.2015
Сообщений: 738
30.06.2015, 19:44     Найти суммы чисел, записанных в строке, между нулями #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <cctype>
 
enum state {
    s_zero, s_number, s_end
};
 
state m_next(const char*& s, size_t& n){
    state st;
 
    if(! *s)
        st = s_end;
    else {
        while(*s && ! std::isdigit(*s))
            ++s;
 
        if(*s == '0'){
            ++s;
            st = s_zero;
        } else {
            for(n = 0; std::isdigit(*s); ++s)
                n = n*10 + (size_t)(*s - '0');
            st = s_number;
        }
    }
    return st;
}
 
 
int main(void){
    char  s[] = "1 2 4 0 4 4 5 0 32 21 35 0 3 0";
 
    state  st;
    size_t n;
 
    size_t sum = 0;
    const char* ptr = &s[0];
    do {
 
        switch((st = m_next(ptr, n))){
        case s_number:
            sum += n;
            break;
        case s_zero:
            std::cout << "sum: " << sum << std::endl;
            sum = 0;
            break;
        }
 
    } while(st != s_end);
    return 0;
}
Результат работы кода
rjxk
 Аватар для rjxk
7 / 7 / 6
Регистрация: 18.06.2015
Сообщений: 30
30.06.2015, 20:40     Найти суммы чисел, записанных в строке, между нулями #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <numeric>
using namespace std;
 
bool comp(int val) { return val==0; }
 
int main()
{
    vector<int> v{1, 2, 4, 0, 4, 4, 5, 0, 32, 21, 35, 0, 3, 0};
    auto i1 = v.begin();
    auto i2 = v.begin();
 
    while (i2!=v.end())
    {
        i2 = find_if(i1, v.end(), comp);
        cout << accumulate(i1, i2, 0) << " ";
        i1 = ++i2;
    }
 
    return 0;
}
Результат работы кода
Yandex
Объявления
30.06.2015, 20:40     Найти суммы чисел, записанных в строке, между нулями
Ответ Создать тему
Опции темы

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