Форум программистов, компьютерный форум, киберфорум
Наши страницы

В предложении найти и вывести на экран все слова, содержащие ровно две буквы “d” - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Комплексные числа http://www.cyberforum.ru/cpp-beginners/thread913705.html
Добавлено через 32 секунды Написать тестовую программу, которая: * динамически выделяет массив указателей на базовый класс (4-6 шт.); * в режиме диалога заполняет этот массив указателями на...
C++ Замена символа в строке Доброго времени суток. Помогите разобраться с ошибкой. 2 IntelliSense: отсутствуют экземпляры перегруженная функция "std::basic_string<_Elem, _Traits, _Alloc>::replace ", соответствующие списку... http://www.cyberforum.ru/cpp-beginners/thread913688.html
C++ Вывод значения переменной на графическое окно
Помогите пожалуйста вывести на графическое окно значение переменной.
C++ Создать список L3 из элементов, входящих и в список L1 и в список L2
создать список л3 из элементов входящих и в список л1 и в список л2
C++ Обращаться к списку по индексу http://www.cyberforum.ru/cpp-beginners/thread913665.html
Хочу вообщем, чтобы обращаясь к какому-нибудь элементу по индексу получать доступ сразу к какому-то списку, не переходя постоянно между элементами типа ->next итд. #include <iostream> using...
C++ Указатель на функцию Вот задание: Создать двумерный массив N*M и найти в нем максимальный и минимальный элемент и их индексы. Необходимо возвращать указатель на функцию. Я написал обычный код, а вот как сделать с... подробнее

Показать сообщение отдельно
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
28.06.2013, 00:13
Попытался ограничиться лишь средствами string для поиска.
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 <string>
 
bool isDoubleD(const std::string word)
{
    size_t dCount = 0, prevDPos = 0;
    while ((word.find("d", prevDPos)) != std::string::npos)
    {
        prevDPos = word.find("d", prevDPos) + 1;
        ++dCount;
    }
    return dCount == 2;
}
 
void wordsWithDoubleD(const std::string str, const char* tokens = ", ?!;:.")
{
    size_t beginPos = 0, nextPos = 0;
    std::string word;
    if ((beginPos = str.find_first_of(tokens)) != 0)
    {
        word = str.substr(0, beginPos);
        if (isDoubleD(word))
            std::cout << word << '\n';
    }
    while((beginPos = str.find_first_of(tokens, nextPos)) != std::string::npos)
    {
        if ((nextPos = str.find_first_of(tokens, beginPos + 1)) == std::string::npos)
            nextPos = str.size();
        if ((nextPos - beginPos) > 1)
        {
            word = str.substr(beginPos + 1, nextPos - (beginPos + 1));
            if (isDoubleD(word))
                std::cout << word << '\n';
        }
    } 
}
int main()
{
    wordsWithDoubleD("dd KSC.sfa.sasg. d dfdfdf.das.dasd. ad.add.a.sdc.sc.m .sdcd ");
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.