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

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

Войти
Регистрация
Восстановить пароль
 
Колос01
0 / 0 / 0
Регистрация: 15.01.2017
Сообщений: 9
#1

Удалить из первой строки все символы, содержащиеся во второй строке - C++

17.02.2017, 13:03. Просмотров 302. Ответов 11
Метки нет (Все метки)

Ввести две символьный строки. Удалить из первой строки все символы, содержащиеся во второй строке. Строки до и после преобразования вывести на экран.
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
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <locale>
 
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL,"Russian");
    //---------------------------------------------
    char str1[100]="";
    char str2[100]="";
 
    cout << "Введите первую строку: ";
    cin.getline(str1, 100);
 
    cout << "Введите вторую строку: ";
    cin.getline(str2, 100);
 
    cout << "\n\n";
 
    cout << "Строка №1 = " << str1 << "\n\n" ; // Выводим обе строчки на консоль.
    cout << "Строка №2 = " << str2 << "\n\n" ;
 
    // Пробегаемся по обоим масивам и сравниваем символы.
    for(int i=0;i<strlen(str2);i++)
    {
        for(int j=0;i<strlen(str1);j++)
        {
            if(str2[i] == str1[j]) // если сивол первой строки такойже как и символ, на котором стоит вложенный цикл второй строки
            {
                
                //str1[j] = ....... ; // удаляем этот символ - но как я не знаю
            };    
        };
    };
 
    cout << "Строка №1 = " << str1 << "\n\n" ; // Выводим обе строчки на консоль.
    cout << "Строка №2 = " << str2 << "\n\n" ;
 
 
    return 0;
}
Добавлено через 14 минут
Да и без использования string класса... нужно как-то удалить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2017, 13:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить из первой строки все символы, содержащиеся во второй строке (C++):

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

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

Вывести на экран в первой строке нечетные символы, во второй четные символы исходной строки - C++
Помогите написать 3 программы. (на С или С++) 1. Вывести на экран в первой строке нечетные символы, во второй четные символы исходной...

Удалить из первой строки символы, которых нет во второй - C++
Составить процедуру, в результате обращения к которой из первой заданной строки удаляется каждый символ, принадлежащий и второй заданной...

Как из первой строки удалить те буквы, которые есть во второй строке? - C++
Как из первой строки удалить те буквы, которые есть во второй строке???

Удалить из строки s1 все символы, встречающиеся в строке s2. - C++
Удалить из строки s1 все символы, встречающиеся в строке s2 А вот здесь как подсчитать кол-во удаленных символов? Пробовал поставить в...

11
Дмитрий8892
53 / 53 / 24
Регистрация: 05.07.2016
Сообщений: 139
17.02.2017, 13:16 #2
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 <iostream>
 
using namespace std;
 
 
 
int main()
{
    setlocale(0,"");
    string str1;
    char str2[100];
    cout << "Строка1:";
    cin >> str1;
    cout << "Строка2:";
    cin >> str2;
    for(int i=0;i<str1.length();i++)
        for(int j=0;j<100;j++){
         if(str1[i]==str2[j])
           for(int k=i;k<str1.length()-1;k++)
            str1[k]=str1[k+1];
            str1[str1.length()-1]=' ';}
    cout << str1;
    return 0;
}
0
GbaLog-
Любитель чаепитий
3028 / 1396 / 336
Регистрация: 24.08.2014
Сообщений: 4,962
Записей в блоге: 1
Завершенные тесты: 2
17.02.2017, 13:25 #3
Цитата Сообщение от Колос01 Посмотреть сообщение
Да и без использования string класса...
Цитата Сообщение от Дмитрий8892 Посмотреть сообщение
string str1;
0
Дмитрий8892
53 / 53 / 24
Регистрация: 05.07.2016
Сообщений: 139
17.02.2017, 13:47 #4
GbaLog-, я написал до внесения правок

Добавлено через 5 минут
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>
 
using namespace std;
 
 
 
int main()
{
    setlocale(0,"");
    char str1[100];
    char str2[100];
    for(int i=0;i<100;i++)
        str1[i]=' ';
    cout << "Строка1:";
    cin >> str1;
    cout << "Строка2:";
    cin >> str2;
    for(int i=0;i<100;i++)
        for(int j=0;j<100;j++)
         if(str1[i]==str2[j])
           for(int k=i;k<99;k++)
            str1[k]=str1[k+1];
    str1[100]=' ';
    cout << str1;
    return 0;
}
Костыль, но всё же
0
GbaLog-
Любитель чаепитий
3028 / 1396 / 336
Регистрация: 24.08.2014
Сообщений: 4,962
Записей в блоге: 1
Завершенные тесты: 2
17.02.2017, 13:49 #5
Цитата Сообщение от Дмитрий8892 Посмотреть сообщение
str1[100]=' ';
А это UB зачем?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7488 / 4603 / 691
Регистрация: 29.11.2010
Сообщений: 12,589
17.02.2017, 13:55 #6
Со string и вообще, на С++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <algorithm>
#include <iostream>
#include <regex>
#include <string>
#include <unordered_set>
 
int main()
{
    std::string first = "orange", second = "banana";
    const std::unordered_set<char> us(second.cbegin(), second.cend());
 
    std::cout << "Before:\n" << first << std::endl << second << std::endl;
    first.erase(std::remove_if(first.begin(), first.end(), [&us](const char c) { return us.find(c) != us.cend(); }), first.end());
    std::cout << "\nAfter:\n" << first << std::endl << second << std::endl;
}
1
Дмитрий8892
53 / 53 / 24
Регистрация: 05.07.2016
Сообщений: 139
17.02.2017, 13:56 #7
GbaLog-, не знаю по какой причине, но у меня всегда оставался в конце рандомный символ
0
Alex5
1086 / 747 / 116
Регистрация: 12.04.2010
Сообщений: 1,907
17.02.2017, 15:06 #8
Цитата Сообщение от Колос01 Посмотреть сообщение
C++
1
2
if(str2[i] == str1[j]) // если сивол первой строки такой же 
// ...  // удаляем этот символ - но как я не знаю
Колос01, можно использовать memmove.
0
Alex5
1086 / 747 / 116
Регистрация: 12.04.2010
Сообщений: 1,907
17.02.2017, 15:26 #9
Цитата Сообщение от Дмитрий8892 Посмотреть сообщение
не знаю по какой причине, но у меня всегда оставался в конце рандомный символ
Дмитрий8892, в отладчике есть окно "Память", где можно посмотреть, как меняется содержимое массива.
0
Миниатюры
Удалить из первой строки все символы, содержащиеся во второй строке  
Колос01
0 / 0 / 0
Регистрация: 15.01.2017
Сообщений: 9
17.02.2017, 16:58  [ТС] #10
Если знаете способы удаления и можете их применить в указанном мною коде - прошу помочь!!! Сегодня этот вопрос надо закрыть...

memmove - я не смогу применить, так как не знаком с ним и врятли преподаватель поймет что это)))

Код должен быть в моём стиле, а массив строк объявляется без класса string (не string str1, а char str1).
0
Photofenix
59 / 59 / 11
Регистрация: 18.11.2016
Сообщений: 467
Завершенные тесты: 1
17.02.2017, 21:01 #11
Попробуйте так:
C++
1
2
3
4
5
6
7
        for (int i(0); str1[i]; i++){
                    for (int j(0); str2[j]; j++){
                    if (str1[i] == str2[j]){
                    str1.erase (i,1); // Удаляем символ из первой строки.
                }
            }
        }
Используйте библиотеку cstring.

Добавлено через 2 минуты
C++
1
first.erase(std::remove_if(first.begin(), first.end(), [&us](const char c) { return us.find(c) != us.cend(); }), first.end());
Это С++ 14????
0
MrGluck
Модератор
Эксперт CЭксперт С++
7488 / 4603 / 691
Регистрация: 29.11.2010
Сообщений: 12,589
17.02.2017, 21:06 #12
Цитата Сообщение от Photofenix Посмотреть сообщение
Это С++ 14????
Нет, C++11
0
17.02.2017, 21:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2017, 21:06
Привет! Вот еще темы с ответами:

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

Напечатать все символы, расположенные между первой и второй запятой - C++
Дано предложение. Напечатать все символы, расположенные между первой и второй запятой. Если второй запятой нет, то должны быть напечатаны...

Добавить к первой строке 5 символов второй строки - C++
Добавить к первой строке 5 символов второй строки.

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


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

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

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