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

Удалить все слова в тексте, которые начинаются и заканчиваются на одну и ту же букву - C++

Восстановить пароль Регистрация
 
eyesdontlie
0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 2
05.06.2014, 19:21     Удалить все слова в тексте, которые начинаются и заканчиваются на одну и ту же букву #1
Пропустил несколько занятий по дисциплине, задали написать программу с использованием строк и библиотекой <string.h> Пытался сам разобраться с этой темой в интернете, но безуспешно. Помогите написать простенькую программу, сам я ее не могу осилить. Задание: Разработать программу, которая удаляет все слова в тексте, которые начинаются и заканчиваются на одну и ту же букву. Если можно, то объясните вкратце, какие функции выполняют команды в этой программе. Заранее благодарю.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2014, 19:21     Удалить все слова в тексте, которые начинаются и заканчиваются на одну и ту же букву
Посмотрите здесь:

C++ Найти в тексте слова, которые начинаются и заканчиваются одной и той же буквой
C++ Удалить из строки все слова, которые начинаются на заглавную букву
C++ Удалить все числа, которые начинаются и заканчиваются на одну и ту же цифру
Масивы: удалить все числа которые начинаются и заканчиваются на одну и ту же цифру C++
Удалить все слова, которые начинаются и заканчиваются за одну и ту же букву C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
05.06.2014, 20:00     Удалить все слова в тексте, которые начинаются и заканчиваются на одну и ту же букву #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
eyesdontlie

Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <conio.h>
#include <string>
//#include <cctype>
 
int main()
{
    std::string str;
    std::cout << "Type some text: ";
    getline(std::cin, str); //Ââîäèì ГІГҐГЄГ±ГІ
    
    char* chStr = new char[str.size() + 1];
    strcpy(chStr, str.c_str());
    
    char* p = strtok(chStr, " ,.:;!?\"()");
    while(p != NULL)
    {
        std::string temp = p;
        if(temp.size() > 1) //Åñëè ñëîâî ñîñòîèò Г*ГҐ ГЁГ§ îäГ*îé ГЎГіГЄГўГ»
        {
            //if(tolower(temp[0]) == tolower(temp[temp.size() - 1])) //Åñëè Г*ГҐ Г*Г*äî ó÷èòûâГ*ГІГј ðåãèñòð
            if(temp[0] == temp[temp.size() - 1]) //Åñëè ïåðâûé ñèìâîë èäåГ*ГІГЁГ·ГҐГ* ïîñëåäГ*åìó
            {
                size_t found = str.find(temp);
                if(found != std::string::npos) //ГЌГ*õîäèì ГЁГ*äåêñ ñëîâГ*
                    str.replace(found, temp.size() + 1, ""); //Г‡Г*ìåГ*ГїГҐГ¬ ýòîò "êóñîê" Г*Г* ""
            }
        }
        p = strtok(NULL, " ,.:;!?\"()");
    }
    
    std::cout << str << std::endl;
    
    delete [] chStr;
    
    std::cout << "\nOperation succeeded\n";
    getch();
}

Работу функций strcpy() и strtok() я описывал в этой теме
Добавлено через 6 минут
Поиск одинаковых слов в тексте
montkay
10 / 10 / 8
Регистрация: 19.02.2014
Сообщений: 72
05.06.2014, 21:18     Удалить все слова в тексте, которые начинаются и заканчиваются на одну и ту же букву #3
Мой код программы. Возможно это не совсем, что нужно, потому что не добавляет часть строки, которая имеет одинаковый символ вначале и в конце (пробельные символы не в счет).

При написании программы использовал функцию isspace() из библиотеки <string.h>. Эта функция возвращает "истина", если символ, помещенный в скобки, является пробельным символом (пробелом, табуляцией или символом новой строки).

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
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
 
int main()
{
    cout << "Enter a text:\n";
    string text;
    getline(cin, text);
 
    char ch;
    int k = text.length();
    if (k)
    {
        string temp;
        string word;
        for (int i = 0; i < k; i++)
        {
            ch = text[i];
            if (!isspace(ch))
                word += ch;
            else
            {
                int size = word.length();
                if (size > 2)
                    if (word[0] == word[size-1])
                    {
                        word = "";
                        continue;
                    }
                temp += word;
                temp += ch;
                word = "";
            }
            if (i == k - 1)
            {
                int size = word.length();
                if (size > 2)
                    if (word[0] == word[size-1])
                    {
                        word = "";
                        continue;
                    }
                temp += word;
            }
        }
        text = temp;
        cout << text << '\n';
    }
    else
        cout << "There is nothing\n";
}
eyesdontlie
0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 2
06.06.2014, 01:19  [ТС]     Удалить все слова в тексте, которые начинаются и заканчиваются на одну и ту же букву #4
Спасибо большое за помощь)
Yandex
Объявления
06.06.2014, 01:19     Удалить все слова в тексте, которые начинаются и заканчиваются на одну и ту же букву
Ответ Создать тему
Опции темы

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