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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ определить, сколько раз в тексте встречается заданное слово. http://www.cyberforum.ru/cpp-beginners/thread824493.html
привет все, помогите составить программку: определить, сколько раз в тексте встречается заданное слово.
C++ Из каждого слова заданного текста удалить последнюю букву. Привет все, помогите с задачей: Из каждого слова заданного текста удалить последнюю букву. http://www.cyberforum.ru/cpp-beginners/thread824492.html
В строке заменить восклицательные знаки точками C++
здравствуйте все, помогите составить программу для этой задачи: Дана строка символов. Преобразовать ее, заменив в ней все восклицательные знаки точками.
C++ Почему не работает этот кусок программы?
Дана цепочка 00000101001010 она записана в массив, каждая цифра отдельный элемент. нужно инвертировать, не используя специальных средств и без побитовых операций. Делаю так: for (i=0;i<14;i++){ if (c==0) c=1; else
C++ Не компилируется программа http://www.cyberforum.ru/cpp-beginners/thread824482.html
Здорова! Не компилируется программа: #include <iostream> using std::cout; using std::endl; class class1 //базовый класс для class1 и class2 { public:
C++ Не могу разобраться с указателями(не понимаю сути освобождения памяти) Вот я тоже дуб в указателях... помогите пожалуйста кому не лениво... с горем пополам заработал Enter (ноуту пора в утиль), и вот (вопросы изложены в комментариях): #include <iostream> using namespace std; class TestResource{ private: int ResVar; int ResIndex; подробнее

Показать сообщение отдельно
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
01.04.2013, 14:42     Дан текст. Напечатать его, преобразовав каждое слово по следующему правилу: удалить из слова все предыдушие вхождения последней буквы.
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
#include <iostream>
#include <sstream>
#include <functional>
#include <algorithm>
#include <string>
 
int main() 
{
    setlocale (0, "Russian");
    
    using namespace std::placeholders;
    
    std::string str = "привет всем, помогите составить програмку:"
                " Дан текст. Напечатать его, преобразовав каждое слово по "
                " следующему правилу: удалить из слова все предыдушие вхождения последней буквы";
    std::istringstream iss(str);
    for (std::string word; iss>>word;)
    {
        const char del = *std::find_if(word.rbegin(), word.rend(), std::bind(isalpha, _1));
        for (std::string::size_type pos = 0; (pos = word.find(del, pos)) != std::string::npos; word.erase(pos, 1));
        std::cout<<word<<" ";
    }
    std::cout<<"\n\n\n";
    
    return 0;
}
Добавлено через 54 минуты
Или, если важно не пропускать пробелы:
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
#include <iostream>
#include <functional>
#include <vector>
#include <algorithm>
#include <string>
#include <boost/algorithm/string.hpp>
 
int main() 
{
    setlocale (0, "Russian");
    
    using namespace std::placeholders;
    
    std::string str = "     привет всем, помогите        составить програмку:"
                " Дан текст. Напечатать его, преобразовав каждое слово по "
                " следующему правилу: удалить из слова все предыдушие вхождения последней буквы";
    std::vector<std::string> words;
    boost::split(words, str, boost::algorithm::is_space());
    for (auto& s : words)
    {
        boost::erase_all(s, std::string() + *std::find_if(s.rbegin(), s.rend(), std::bind(isalpha, _1)));
        std::cout<<s<<" ";
    }
    std::cout<<"\n\n\n";
    
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru