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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Виктор27
11 / 11 / 2
Регистрация: 21.11.2013
Сообщений: 334
#1

Удаление предлога из предложения - C++

21.10.2015, 08:54. Просмотров 301. Ответов 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
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include <locale>
#include <stdio.h>
 
#pragma warning(disable : 4996)
using namespace std;
 
void main()
{
    setlocale (LC_ALL,"Russian");
    system("CLS"); //Очистка экрана
    char *pr[] = {"в", "без", "до", "из", "к", "на", "по", "о", "от", "перед", "при", "через", "с", "у", "за", "над", "об", "под", "про", "для"};
    const char separator[] = " /.,!?"; //Символы-разделители строки
    char S[]={"Строка, которая будет разбита на отдельные слова! Это правда? Ура."}; //Исходное предложение
 
    char *Ptr=NULL; //Указатель для функции strtok
    Ptr=strtok(S,separator);
 
        while (Ptr)
    {
        for (int i=0; i<20; i++)
            {
                if (Ptr == pr[i])
                {
                    delete Ptr;
                }
            }
       cout<<Ptr<<"\n";
       Ptr=strtok(0, separator);
    }
    cin.get();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2015, 08:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление предлога из предложения (C++):

удаление символа из предложения - C++
есть такой часть класса, который удаляет символ из предложение: char* strin::operator-(char letter) { int i,j; char...

Дано два предложения (Распечатать слова из первого предложения, который начинаются на первую букву последнего слова второго предложения) - C++
Дано два предложения. Распечатать: - слова из первого предложения, который начинаются на первую букву последнего слова второго...

Напечатать все слова заданного предложения, состоящие из тех же букв, что и первое слово предложения - C++
Напечатать все слова заданного предложения (слова разделены пробелами), состоящие из тех же букв, что и первое слово предложения.

Даны два предложения. Найти самое короткое из слов первого предложения, которого нет во втором предложении - C++
Помогите решить задачу! Даны два предложения.Найти самое короткое из слов первого предложения,которого нет во втором предложении!

Даны два предложения. Найти самое короткое из слов первого предложения, которого нет во втором предложении - C++
Здравствуйте. Есть задача (написана в теме), есть решение: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;sstream&gt; ...

Даны два предложения. Найти самое короткое из слов первого предложения,которого нет во втором предложений? - C++
Даны два предложения. Найти самое короткое из слов первого предложения,которого нет во втором предложений?

6
Игорь1986
49 / 113 / 29
Регистрация: 08.09.2014
Сообщений: 991
Завершенные тесты: 1
21.10.2015, 09:34 #2
Тебе ни кажется что ты напутал
C++
1
Ptr=strtok(S,separator);
Так как сравнение очень странно
C++
1
if (Ptr == pr[i])
0
Виктор27
11 / 11 / 2
Регистрация: 21.11.2013
Сообщений: 334
21.10.2015, 09:41  [ТС] #3
Игорь1986, Возможно и напутал, а как будет правильно?
0
Игорь1986
49 / 113 / 29
Регистрация: 08.09.2014
Сообщений: 991
Завершенные тесты: 1
21.10.2015, 09:43 #4
А зачем тебе вообще разделитель если ты ищещь предлоги
Нахождение слова в строке, в твоем случае массив предлогов и все
std::string.find
0
Виктор27
11 / 11 / 2
Регистрация: 21.11.2013
Сообщений: 334
21.10.2015, 09:47  [ТС] #5
Это только начало. Мне надо разбить предложение на слова, удалить предлоги, и сделать морфологический разбор каждого слова))
0
Игорь1986
49 / 113 / 29
Регистрация: 08.09.2014
Сообщений: 991
Завершенные тесты: 1
21.10.2015, 10:21 #6
Ну смотри как я думаю, ты разбиваешь предложения на слова, тоесть смотришь если есть в строке пробелы или разделитель и не конец строки, то записываешь слово в вектор допустим в этом векторе ищещь твои предлоги, тут просто и удаляешь из него вот так думаю
C++
1
2
3
4
5
6
7
8
9
10
11
12
    const char separator[]="/.,!?"; //Символы-разделители строки
        vector<string> Slovo;
    char S[]="Строка, которая будет разбита на отдельные слова! Это правда? Ура. "; 
    char *Ptr=NULL; //Указатель для функции strtok
 
    Ptr=strtok(S,separator); 
 
    while (Ptr)
    {
       Slovo.push_back(Ptr);
       Ptr=strtok(0,separator);
    }
Удалять из вектора erase применяй с проверкой элемента вектора с твоим массивом предлогов
0
Виктор27
11 / 11 / 2
Регистрация: 21.11.2013
Сообщений: 334
21.10.2015, 11:21  [ТС] #7
А можете ткнуть носом пожалуйста, что-то ну ни как не соображу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void main()
{
    setlocale (LC_ALL,"Russian");
    const char separator[]="/.,!?"; //Символы-разделители строки
        vector <string> Slovo;
        Slovo [0] = 'на';
 
        char S[]="Строка, которая будет разбита на отдельные слова! Это правда? Ура. "; 
    char *Ptr=NULL; //Указатель для функции strtok
 
    Ptr=strtok(S,separator); 
 
    while (Ptr)
    {
        if (Ptr == Slovo[0])
        {
            delete Ptr;
        }
 
        Slovo.push_back(Ptr);
        cout << Ptr << "\n";
        Ptr=strtok(0,separator);
    }
Добавлено через 48 минут
Игорь1986, Так?
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
void main()
{
    setlocale (LC_ALL,"Russian");
    const char znak[]=" /.,!?"; //Символы-разделители строки
    
    const char* const str[] = {"в", "без", "до", "из", "к", "на", "по", "о", "от", "перед", "при", "через", "с", "у", "за", "над", "об", "под", "про", "для"};
    vector<string> Slovo( str, str + sizeof(str)/sizeof(*str) );
 
    char Stroka[]="Строка, которая будет разбита на отдельные слова! Это правда? Ура. "; 
    char *Ptr=strtok(Stroka, znak); 
 
    while (Ptr != 0)
    {
 
        for (int i=0; i<20; i++)
            {
                if (Ptr == str[i])
                {
                    Slovo.push_back(Ptr);
                    //delete Ptr;
                }
            }
 
        //
        cout << Ptr << "\n";
        Ptr=strtok(0, znak);
    }
 
    getch();
}
Только все равно не работает(((
0
21.10.2015, 11:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2015, 11:21
Привет! Вот еще темы с ответами:

В текстовом файле построчно записаны предложения. Записать во второй текстовый файл первое слово последнего предложения - C++
В текстовом файле построчно записаны предложения. Записать во второй текстовый файл первое слово последнего предложения. Помогите...

Разбить текст на предложения, а предложения - на слова - C++
Вот само задание. С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки...

Удаление слов из предложения с помощью StringBuilder - C#
Нужно при помощи класса StringBuilder удалить из предложения, введенного с клавиатуры, все слова, что кончаются на &quot;ка&quot;. Помогите...

Удаление слов и букв из середины предложения - JavaScript
Здравствуйте. Подскажите пожалуйста, как удалить слова и буквы из середины, вот пример: &lt;button...


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

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

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