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

Найти суму чисел встречающихся в строке - C++

Восстановить пароль Регистрация
 
deeonia58
0 / 0 / 0
Регистрация: 10.09.2013
Сообщений: 6
19.09.2013, 15:46     Найти суму чисел встречающихся в строке #1
Найти суму чисел встречающихся в строке: "Текст: 2013 букв 150 или 350"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2013, 15:46     Найти суму чисел встречающихся в строке
Посмотрите здесь:

Найти максимальное из чисел встречающихся в матрице более одного раза. Сделать используя указатели и классы C++
найти максимальное из чисел встречающихся в данном одномерном массиве более одного раза C++
сумма чисел встречающихся в строке C++
C++ Среди чисел массива, встречающихся минимальное число раз, найти максимальное
Найти суму чисел, введенного целого числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.09.2013, 15:57     Найти суму чисел встречающихся в строке #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
#include <iostream>
#include <cstdlib>
#include <string>
#include <sstream>
 
using namespace std;
 
int main() 
{
    setlocale(0, "");
    
    stringstream s("Текст: 2013 букв 150 или 350");
    
    int sum = 0;
    int n = 0;
    string temp;
    while (s >> temp)
    {
        s >> n;
        sum += n;
    }
    s.clear();
    cout << s.str() << endl;
    cout << "sum = " << sum << endl;
 
    system("pause");
    return 0;
}
Миниатюры
Найти суму чисел встречающихся в строке  
Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
19.09.2013, 16:07     Найти суму чисел встречающихся в строке #3
alsav22, объясни, пожалуйста, как работает. Как-то слишком элегантно смотрится. Я бы начал искать пробелы, потом проверять являются ли последовательности символов между пробелами числами и потом их суммировать. А в твоем сообщении всё так стройненько, но не очень понятно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.09.2013, 16:22     Найти суму чисел встречающихся в строке #4
Стройненько, потому что используется строковый поток и код только под конкретную строку. В строке слова и числа идут строго через раз. Строка помещается в строковый поток, потом, в цикле, идёт чтение слов (с помощью >>) из потока. Одно в string, одно в int. Числа суммируются.
Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
19.09.2013, 16:26     Найти суму чисел встречающихся в строке #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Стройненько, потому что используется строковый поток и код только под конкретную строку. В строке слова и числа идут строго через раз. Строка помещается в строковый поток, потом, в цикле, идёт чтение слов (с помощью >>) из потока. Одно в string, одно в int. Числа суммируются.
Понял! Вся фишка в чередовании. Спасибо.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.09.2013, 17:04     Найти суму чисел встречающихся в строке #6
Если с произвольным чередованием, то можно так:
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
#include <iostream>
#include <cstdlib>
#include <string>
#include <sstream>
 
using namespace std;
 
int main() 
{
    setlocale(0, "");
    
    stringstream s("Текст: 2013 150 или или 350 ");
    
    int sum = 0;
    int n = 0;
    string temp;
    while (true)
    {
        s >> n;
        if (!s && s.eof()) break;
        if (!s)
        {
            s.clear();
            s >> temp;
            continue;
        }
        if (s.eof())
        {
            sum += n;
            break;
        }
        else sum += n;
    }
    s.clear();
    cout << s.str() << endl;
    cout << "sum = " << sum << endl;
 
    system("pause");
    return 0;
}
Yandex
Объявления
19.09.2013, 17:04     Найти суму чисел встречающихся в строке
Ответ Создать тему
Опции темы

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