Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
nixe2000
0 / 0 / 0
Регистрация: 11.12.2018
Сообщений: 8
1

Последовательность символов из букв, удалить все буквы, содержащиеся в строке str. Использовать STL и контейнеры

18.03.2019, 23:39. Просмотров 2282. Ответов 3

Здравствуйте, подскажите, как правильно реализовать удаление всех букв, содержащихся в строке str. При этом нужно использовать только контейнеры и алгоритмы стандартной библиотеки шаблонов.
Пробовала по разному, но не получается, последний результат прилагаю.
Запуталась также в работе find в функции для строки, как нужно возвращать из функции?
Сначала ввожу количество членов, потом заполняю, далее вывод на экран последовательности.
После создание и ввод строки str, потом должно работать это: b.erase(remove_if(b.begin(),b.end(),del),b.end()); (удаление тех букв, что есть в строке str), где del функция, должна возвращать либо найденное значение, либо его отсутствие.
В конце вывод новой последовательности
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 <iostream>
#include <list>
#include <string>
#include <algorithm>
using namespace std;
 
string str;
 
bool del(string X) {
         return str.find_first_of(X, 0);;
}
 
int main() {
    int m;
    string y;
    setlocale(0, "rus");
    cin >> m;   
    list <string> b;
    for (int i = 0; i < m; i++) {
        cout << "a[" << i << "] = ";
        cin >> y;
        b.push_back(y);
    }
    for (list <string>::iterator iter = b.begin(); iter != b.end(); iter++)
        cout << *iter << " ";
    cout << endl;
    cin >> str;
    cout << "Строка: " << str;
    b.erase(remove_if(b.begin(),b.end(),del),b.end());
        for (list <string>::iterator iter = b.begin(); iter != b.end(); iter++)
        cout << *iter << " ";
    system("pause");
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2019, 23:39
Ответы с готовыми решениями:

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

В строке символов удалить из строки все группы букв вида abcd
Написать подпрограмму , которая в строке символов удалить из строки все группы букв вида abcd. Еще...

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

Из множества символов первой строки удалить символы содержащиеся во второй строке
Народ, помогите пожалуйста :-С помощью одной/двух из этих процедур: -ввода с клавиатуры...

Ввести последовательность символов, заканчивающихся "*" выяснить: сколько пробелов, сколько букв А, сколько букв С, все буквы А заменить на точку
В оконном режиме Delphi

3
zayats80888
558 / 316 / 142
Регистрация: 07.02.2019
Сообщений: 1,060
19.03.2019, 00:01 2
Лучший ответ Сообщение было отмечено nixe2000 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
bool notalpha(const char& ch) {
    return !isalpha(ch);
}
int main()
{
    string in;
    getline(cin, in);
    stringstream out;
    copy_if(in.begin(), in.end(), ostream_iterator<char>(out), notalpha);
    getline(out, in);
    cout << in;
}
1
Avaddon74
483 / 304 / 119
Регистрация: 15.09.2017
Сообщений: 1,051
19.03.2019, 00:32 3
Лучший ответ Сообщение было отмечено nixe2000 как решение

Решение

zayats80888, если выходные данные для последующей обработки не нужны, тогда проще написать так:
(ваш вариант укороченный)
C++
1
2
3
string in;
getline(cin, in);
copy_if(in.begin(), in.end(), ostream_iterator<char>(cout, ""), notalpha);
2
outoftime
║XLR8║
854 / 749 / 227
Регистрация: 25.07.2009
Сообщений: 3,716
Записей в блоге: 5
19.03.2019, 02:43 4
Лучший ответ Сообщение было отмечено nixe2000 как решение

Решение

zayats80888, что-то похожее как предложил Avaddon74, только модифицировал строку "на месте"

C++
1
2
3
4
5
6
7
8
9
10
11
#include <bits/stdc++.h>
 
bool notalpha(const char ch) { return !isalpha(static_cast<unsigned char>(ch)); }
 
int main()
{
    std::string line;
    std::getline(std::cin, line);
    line.resize(std::copy_if(line.cbegin(), line.cend(), line.begin(), notalpha) - line.cbegin());
    std::cout << line << std::endl;
}
2
19.03.2019, 02:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2019, 02:43

В заданной строке вывести все слова, имеющие наименьшее количество букв и удалить начинающиеся с маленькой буквы
С клавиатуры вводиться строка, написать программу 1) которая выводит на экран слова, которые имеют...

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

Удалить из первой строки все символы, содержащиеся во второй строке
Ввести 2 символьные строки. Удалить из первой строки все символы, содержащиеся во второй строке....


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

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

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