Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 15.03.2017
Сообщений: 5
1

Работа со строками (замена символов)

15.03.2017, 23:21. Показов 1121. Ответов 7
Метки нет (Все метки)

Даны две строки. Удалить из каждой из них символы, отсутствующие в другой
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2017, 23:21
Ответы с готовыми решениями:

Работа со строками. Замена символов
Всем привет. Вот полное задание: "Введи с клавиатуры 3 строки в самой длинной поменяй первое слово...

Работа со строками символов
Заданная строка , состоящая из слов , разделенным одним или несколькими пробелами. Вывести на экран...

Работа со строками символов
Помогите, пожалуйста, написать программу на С++ Разработать программу, которая вводит текст и...

Работа со строками символов
описать функцию работы со строкой символов, которая найдет сколько раз входит в строку некоторый...

7
56 / 56 / 31
Регистрация: 24.10.2016
Сообщений: 186
16.03.2017, 00:29 2
Лучший ответ Сообщение было отмечено Bant1k как решение

Решение

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 <algorithm>
#include <string>
#include <iostream>
 
using namespace std;
 
void remove_if_not(string &a, string &b) {
    size_t count = 0;
    remove_if(a.begin(), a.end(), [&](char c){ if (b.find(c) == string::npos) {return true;} count++; return false; });
    a.resize(count);
}
 
int main() {
    string a = "string";
    string b = "test";
 
    string tmp(a);
    remove_if_not(a, b);
    remove_if_not(b, tmp);
 
    cout << a << endl;
    cout << b;
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 15.03.2017
Сообщений: 5
16.03.2017, 11:18  [ТС] 3
Добавлено через 31 секунду
Спасибо, есть еще варианты решения? (слишком сложно, можете объяснить на премитивах?)
0
Любитель чаепитий
3673 / 1748 / 544
Регистрация: 24.08.2014
Сообщений: 5,889
Записей в блоге: 1
16.03.2017, 13:24 4
Цитата Сообщение от OlafNestandart Посмотреть сообщение
C++
1
2
3
size_t count = 0;
remove_if(a.begin(), a.end(), [&](char c){ if (b.find(c) == string::npos) {return true;} count++; return false; });
a.resize(count);

a.erase(remove_if(a.begin(), a.end(), [&](char c){ return b.find(c) != std::string::npos; }, a.end());
1
0 / 0 / 0
Регистрация: 15.03.2017
Сообщений: 5
16.03.2017, 14:16  [ТС] 5
Цитата Сообщение от GbaLog- Посмотреть сообщение
a.erase(remove_if(a.begin(), a.end(), [&](char c){ return b.find(c) != std::string::npos; }, a.end());
Можете, пожалуйста, объяснить эту строку?
0
Любитель чаепитий
3673 / 1748 / 544
Регистрация: 24.08.2014
Сообщений: 5,889
Записей в блоге: 1
16.03.2017, 14:21 6
Цитата Сообщение от Bant1k Посмотреть сообщение
Можете, пожалуйста, объяснить эту строку?
Сначала смещаем все символы, которые есть в строке b вправо, потом удаляем из строки все элементы, которые были сдвинуты.
http://en.cppreference.com/w/cpp/algorithm/remove
http://en.cppreference.com/w/c... ring/erase

Там, кстати, ошибка. Скобку не поставил, так правильно:
a.erase(remove_if(a.begin(), a.end(), [&](char c){ return b.find(c) != std::string::npos; }), a.end());
1
0 / 0 / 0
Регистрация: 15.03.2017
Сообщений: 5
16.03.2017, 14:32  [ТС] 7
А есть еще проще вариант, чтобы как самому новому чайнику, который только начал?
0
Форумчанин
Эксперт CЭксперт С++
8171 / 5021 / 1436
Регистрация: 29.11.2010
Сообщений: 13,453
16.03.2017, 14:46 8
Лучший ответ Сообщение было отмечено Bant1k как решение

Решение

Даны две строки. Удалить из каждой из них символы, отсутствующие в другой. С++
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2017, 14:46

Работа со строками символов
Помогите решить пжл. Дан текст (2-3 строки) в файле F1. Описать функцию преобразования строки,...

Замена в одномерном массиве, работа со строками из нулей и единиц
HELP!!!я ноль в с++ не могу сделать данные задачи: &quot;Даны одномерные массивы чисел Х,размерностью n...

Работа со строками. Удаление отдельных символов
Есть проблемка: нужно написать программу, которая бы удаляла те слова, в которых есть цифры. Вот...

Работа со строками как с массивом символов
Работаю в Borland C++3.1 Нt понимаю почему не компиллируется, выдает постоянно ошибку - &quot;Unable to...

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

Замена символов строками
Здравствуйте, подскажите каким алгоритмов пользуетесь вы для решения подобной задачи. Есть файл с...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru