Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Verk
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 13
1

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

23.06.2013, 23:00. Просмотров 1236. Ответов 4
Метки нет (Все метки)

Всем привет! Помогите написать программу! В предложении найти и вывести на экран все слова, содержащие ровно две буквы “d”. Заранее огромное спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2013, 23:00
Ответы с готовыми решениями:

В строке найти слова содержащие ровно две буквы d
Дана строка, в которой слова разделены одним пробелом. Напечатать все слова ,...

Найдите все слова в предложении, содержащие по две буквы М, не стоящие рядом, и определите их количество
Найдите все слова в предложении, содержащие по две буквы М, не стоящие рядом, и...

Используя следующий фрагмент программы,введите перечисленные ниже слова из списка С содержащие ровно две буквы d
Ребят помогите.нужно написать прогу на С++.Проблема со строками я вообще без...

Вывести на экран слова, содержащие 3 буквы.
Дана вот такая задачка на Си: Дана символьная строка, содержащая текст,...

Вывести на экран слова, содержащие три буквы
Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова,...

4
capy
3 / 3 / 4
Регистрация: 23.06.2013
Сообщений: 10
23.06.2013, 23:20 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
#include <iostream>
#include <string>
#include <sstream> // для разбиения строки на слова
#include <algorithm> // для поиска вхождений буквы d
 
using namespace std;
 
int main()
{
    string str;
    cout << "Введите произвольное предложение:\n";
    getline(cin, str);
 
    stringstream ss(str); // отправляем строку в поток ss
                          // для дальнейшей обработки
    string word;
    while (ss >> word) // разделяем строку на слова
    {
        // проверяем количество вхождений буквы d в слове
        if ( count(word.begin(), word.end(), 'd') == 2 )
            cout << word << endl;
    }
 
    return 0;
}
0
Khelleos
38 / 38 / 25
Регистрация: 13.05.2010
Сообщений: 283
Записей в блоге: 1
27.06.2013, 23:57 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
25
26
27
28
29
30
31
32
#include <iostream>
 
int main()
{
    char buffer[] = "sdlkfj dd fdlgjfdg ddkjs fddslkd\0";
    char *word;
    int length, count;
   
    printf("%s\n\n", buffer);
    word = strtok(buffer, " ,.!");
 
    for(int i = 1; word != NULL; i++)
    {
        length = strlen(word),
        count = 0;
        
        for(int j = 0; j < length; j++)
        {
            if (word[j] == 'd')
                count ++;
        }
 
        if (count == 2)
            printf("%d. %s\n", i, word, strlen(word));
        
        word = strtok(NULL, " ,.!");
    }
 
    system("pause");
   
    return 0;
}
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
28.06.2013, 00:13 4
Попытался ограничиться лишь средствами 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
Issues
431 / 366 / 149
Регистрация: 06.08.2012
Сообщений: 961
28.06.2013, 00:18 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <algorithm>
#include <iostream>
#include <string>
#include <sstream>
 
int main()
{
    std::string str = "hello dude";
 
    std::stringstream ss(str);
    std::string s;
 
    for (; ss >> s;)
    {
        if (std::count(s.begin(), s.end(), 'd') == 2)
                std::cout << s << ' ';
    }
 
    system("PAUSE");
    return 0;
}
1
28.06.2013, 00:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2013, 00:18

Вывести на экран слова, содержащие три буквы
Дана строка, содержащая текст, заканчивающаяся точкой. Вывести на экран слова,...

Вывести на экран слова, содержащие три буквы.
Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова,...

Вывести на экран слова из текста, содержащие три буквы
Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru