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

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

Войти
Регистрация
Восстановить пароль
 
Sergeev88
0 / 0 / 0
Регистрация: 16.03.2017
Сообщений: 15
#1

Исключить все слова предложения, начинающиеся с заданного префикса - C++

17.07.2017, 17:10. Просмотров 218. Ответов 7

Дано предложение. Исключить все слова, начинающиеся с
префикса «наи».
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2017, 17:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Исключить все слова предложения, начинающиеся с заданного префикса (C++):

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

Перепишите в новый файл все строки, начинающиеся с заданного слова - C++
Помогите,пожалуйста,с задачами: 1. Перепишите в новый файл все строки, начинающиеся с заданного слова. 2. Создайте два выходных файла:...

Обработка строк. Найти все слова, начинающиеся с заданного символа. - C++
Добрый день! Я к вам снова с вопросом... Задача: Заданная строка состоит из слов, разделенных одним или несколькими пробелами. Найти...

Удалить из заданного предложения все слова, где встречаются цифры - C++
Составить и отладить программу, которая удаляет (путем сжатия) из заданного предложения все слова, где встречаются цифры, сохраняя знаки...

Перечислить все слова заданного предложения, которые состоят из тех же букв что и первое - C++
Уважаемые знатоки кода! Помогите, пожалуйста, с программкой, по заданию: перечислить все слова заданного предложения, которые состоят...

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

7
Sergeev88
0 / 0 / 0
Регистрация: 16.03.2017
Сообщений: 15
17.07.2017, 17:28  [ТС] #2
ребят,подскажите код или алгоритм пожалуйста(лучше и то и то)


Дано предложение. Исключить все слова, начинающиеся с
префикса «наи».
0
Геомеханик
711 / 517 / 365
Регистрация: 26.06.2015
Сообщений: 1,237
17.07.2017, 18:02 #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
#include <iostream>
#include <cstring>
#include <cctype>
#define is_delim(c) (isspace((c)) || ispunct((c)))
 
char* rempfx_word(char* s, const char* prefix){
    const   size_t n = strlen(prefix);
    unsigned char* t = reinterpret_cast<unsigned char*>(s), *i = t;
    for(unsigned char* p = i; *i; *i = *p){
        if(!is_delim(*p)){
            if(!strncmp(reinterpret_cast<char*>(p), prefix, n)){
                while(*p && !is_delim(*p))
                    ++p;
            } else {
                while(*p && !is_delim(*p))
                    *i++ = *p++;
            }
        } else
            *i++ = *p++;
    }
    return s;
}
 
int main(void){
    char s[] = "наивный, наивность, ананас (наилучший) конец наибольший";
    std::cout << s << std::endl;
    std::cout << rempfx_word(s, "наи") << std::endl;
    std::cin.get();
    return 0;
}
0
GbaLog-
Любитель чаепитий
3074 / 1413 / 341
Регистрация: 24.08.2014
Сообщений: 5,017
Записей в блоге: 1
Завершенные тесты: 2
17.07.2017, 18:56 #4
Цитата Сообщение от Геомеханик Посмотреть сообщение
unsigned char*
нафига тут unsigned?
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
17.07.2017, 19:00 #5
Цитата Сообщение от GbaLog- Посмотреть сообщение
нафига тут unsigned?
Смею предположить, чтобы избежать sign propagation при передаче в функции isspace и ispunct, т.к. они принимают int.
Хотя и можно было сделать слегка подругому.
0
Геомеханик
711 / 517 / 365
Регистрация: 26.06.2015
Сообщений: 1,237
17.07.2017, 19:22 #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
#include <iostream>
#include <sstream>
#include <iterator>
#include <algorithm>
#include <string>
 
struct pred {
    const char* pfx;
    pred(const char* p):pfx(p){}
 
    bool operator () (const std::string& s) const {
        return (s.find(pfx) == 0);
    }
};
 
int main(void){
    std::string s = "наилучший наиболее настройка наименьший конец наибольший";
    const char pfx[] = "наи";
 
    std::istringstream sp(s);
    std::remove_copy_if(std::istream_iterator<std::string>(sp), std::istream_iterator<std::string>(), 
                        std::ostream_iterator<std::string>(std::cout, " "), pred(pfx));
    std::cin.get();
    return 0;
}
0
GbaLog-
Любитель чаепитий
3074 / 1413 / 341
Регистрация: 24.08.2014
Сообщений: 5,017
Записей в блоге: 1
Завершенные тесты: 2
17.07.2017, 20:20 #7
если слова будут большими, то не так уж эффективно получается.
C++
1
2
3
4
5
6
7
8
9
struct pred {
    size_t sz;
    const char* pfx;
    pred(const char* p):pfx(p), sz(std::char_traits<char>::length(pfx)) {}
 
    bool operator () (const std::string& s) const {
        return s.size() >= sz && std::equal(s.begin(), s.begin() + sz, pfx, pfx + sz);
    }
};
0
Sergeev88
0 / 0 / 0
Регистрация: 16.03.2017
Сообщений: 15
18.07.2017, 12:51  [ТС] #8
а напишите комметарии к коду, пожалуйста
0
18.07.2017, 12:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2017, 12:51
Привет! Вот еще темы с ответами:

Считать текст из файла и вывести на экран только предложения, начинающиеся с введенного с клавиатуры слова - C++
Доброго времени суток! Помогите, пожалуйста, дописать код. Вот задание: Написать программу, которая, считывает текст из файла и выводит...

Найти слова, начинающиеся с заданного символа - C++
Задача с++ В заданном тексте найти слова, начинающиеся с заданного символа. Эти слова записать в новый файл, а их количество вывести...

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

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


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

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

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