35 / 1 / 0
Регистрация: 22.04.2016
Сообщений: 42
1

Дана последовательность слов. Необходимо удалить из каждого слова все предыдущие вхождения последней буквы

19.02.2018, 18:47. Показов 2454. Ответов 4
Метки нет (Все метки)

Не совсем понимаю, с чего начинать надо реализацию. Как в КАЖДОМ слове найти последнюю букву, и удалить такие же, за исключением её самой? Заранее спасибо за любую помощь.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2018, 18:47
Ответы с готовыми решениями:

Удалить из каждого третьего слова заданного текста слова все предыдущие вхождения последней буквы
Дана последовательность слов.Напечатать все слова,предварительно преобразив каждое третье по...

Удалить из слова все предыдущие вхождения последней буквы
Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных...

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

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

4
Форумчанин
Эксперт CЭксперт С++
8170 / 5020 / 1436
Регистрация: 29.11.2010
Сообщений: 13,453
19.02.2018, 18:57 2
Лучший ответ Сообщение было отмечено algoritmizaciya как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
 
int main()
{
    const std::string str = "eniki beniki eli vareniki";
    std::istringstream ist(str);
    std::string word;
    while (ist >> word)
    {
        const char lastCh = word.back();
        std::remove_copy(word.begin(), word.end(), std::ostream_iterator<char>(std::cout), lastCh);
        std::cout << lastCh << " ";
    }
}
1
35 / 1 / 0
Регистрация: 22.04.2016
Сообщений: 42
27.02.2018, 18:57  [ТС] 3
MrGluck, можно ли сделать так, чтобы строка считывалась из одного файла, а результат записывался в другой файл? Пыталась хотя бы считывание сделать, но не совсем разбираюсь с этим, поэтому ничего не получилось.

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
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <conio.h>
#include <fstream>
 
int main()
{
     std::ifstream file("laba13.txt");
     std::ostringstream oss;
     oss << file.rdbuf();
     std::string str = oss.str();
    std::istringstream ist(str);
    std::string word;
    while (ist >> word)
    {
        const char lastCh = word.back();
        std::remove_copy(word.begin(), word.end(), std::ostream_iterator<char>(std::cout), lastCh);
        std::cout << lastCh << " ";
    }
    _getch();
}
0
2228 / 1731 / 865
Регистрация: 21.12.2010
Сообщений: 3,074
Записей в блоге: 11
27.02.2018, 20:30 4
Лучший ответ Сообщение было отмечено algoritmizaciya как решение

Решение

с файлом
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
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <fstream>
#include <cstdlib>
 
int main()
{
    std::fstream ifs("in.txt", std::ios::in), ofs("out.txt", std::ios::out);
    if (!ifs.is_open())
    {
        std::cerr << "file not opened\n";
        exit(1);
    }
    std::string str;
    while (std::getline(ifs, str))
    {
        std::istringstream ist(str);
        std::string word;
        while (ist >> word)
        {
            const char lastCh = word.back();
            std::remove_copy(word.begin(), word.end(), std::ostream_iterator<char>(ofs), lastCh);
            ofs << lastCh << " ";
        }
        ofs << '\n';
    }
    ifs.close();
    ofs.close();
    
}
Добавлено через 51 секунду
через регексы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <boost/regex.hpp>
#include <string>
#include <locale>
using namespace std::string_literals;
 
int main()
{
    std::locale::global(std::locale("rus"));
    const std::string str = "Не совсем понимаю, с чего начинать надо реализацию. Как в КАЖДОМ слове найти последнюю букву, "
                            "и удалить такие же, за исключением её самой? Заранее спасибо за любую помощь.";
    boost::regex reg("[[:alpha:]](?=[[:alpha:]]*?([[:alpha:]])\\>)");
    const std::string str1 = boost::regex_replace(str, reg, [](auto const& res)
    {
        return res[0] == res[1] ? ""s : res[0];
    });
    std::cout << str1 << std::endl;
}
1
35 / 1 / 0
Регистрация: 22.04.2016
Сообщений: 42
27.02.2018, 20:49  [ТС] 5
igorrr37, спасибо огромное!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2018, 20:49

Удалить из каждого слова все предыдущие вхождения последней буквы
Дана последовательность слов. Напечатать все слова, предварительно преобразовав каждое из них по...

удалить из слова все предыдущие вхождения последней буквы
1. Вводится строка текста из N символов, слова разделены одним пробелом. Составьте программу,...

Удалить из слова все предыдущие вхождения последней буквы
program lab6; Var s,sl,st:string; i:byte; Begin write('Posledovatelnost slov: ');readln(s); if...

Удалить из слова все предыдущие вхождения последней буквы
Здравствуйте друзья, прошу помощи в работе на паскале, желательно если не трудно то напиши с...


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

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

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