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

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

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

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

21.10.2015, 08:54. Просмотров 260. Ответов 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();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2015, 08:54     Удаление предлога из предложения
Посмотрите здесь:

удаление символа из предложения C++
Даны два предложения. Найти самое короткое из слов первого предложения, которого нет во втором предложении C++
C++ Даны два предложения. Найти самое короткое из слов первого предложения,которого нет во втором предложений?
Предложения в С++ C++
Предложения C++
В текстовом файле построчно записаны предложения. Записать во второй текстовый файл первое слово последнего предложения C++
C++ Предложения в строках
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Игорь1986
44 / 108 / 28
Регистрация: 08.09.2014
Сообщений: 924
Завершенные тесты: 1
21.10.2015, 09:34     Удаление предлога из предложения #2
Тебе ни кажется что ты напутал
C++
1
Ptr=strtok(S,separator);
Так как сравнение очень странно
C++
1
if (Ptr == pr[i])
Виктор27
10 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 292
21.10.2015, 09:41  [ТС]     Удаление предлога из предложения #3
Игорь1986, Возможно и напутал, а как будет правильно?
Игорь1986
44 / 108 / 28
Регистрация: 08.09.2014
Сообщений: 924
Завершенные тесты: 1
21.10.2015, 09:43     Удаление предлога из предложения #4
А зачем тебе вообще разделитель если ты ищещь предлоги
Нахождение слова в строке, в твоем случае массив предлогов и все
std::string.find
Виктор27
10 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 292
21.10.2015, 09:47  [ТС]     Удаление предлога из предложения #5
Это только начало. Мне надо разбить предложение на слова, удалить предлоги, и сделать морфологический разбор каждого слова))
Игорь1986
44 / 108 / 28
Регистрация: 08.09.2014
Сообщений: 924
Завершенные тесты: 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 применяй с проверкой элемента вектора с твоим массивом предлогов
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2015, 11:21     Удаление предлога из предложения
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Виктор27
10 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 292
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();
}
Только все равно не работает(((
Yandex
Объявления
21.10.2015, 11:21     Удаление предлога из предложения
Ответ Создать тему
Опции темы

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