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

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

Войти
Регистрация
Восстановить пароль
 
Harmonster
9 / 9 / 3
Регистрация: 20.05.2012
Сообщений: 101
#1

Удаление из S1 - S2 - C++

23.01.2014, 14:06. Просмотров 269. Ответов 6
Метки нет (Все метки)

Написать и протестировать функцию DELETE(s1, s2), которая удаляет из строки s1 все символы, встречающиеся в строке s2.
Сделано всё в main, в функцию перенесу потом. помогите пожалуйста!
Можете объяснить мне, что не так?
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 <string>
#include <Windows.h>
using namespace std;
 
int main()
{
    string string, string2, string3;
    cout << "String: ";
    getline(cin, string);
    cout << "String 2: ";
    getline(cin, string2);
    for (int i = 0; i < string.length(); i++)
    {
        for (int j = 0, k = 0; j < string2.length(); j++)
        {
            if (string[i] != string2[j])
            {
                string3[k] = string[i];
                k++;
            }
                
        }   
    }
    cout << string3 << endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 14:06     Удаление из S1 - S2
Посмотрите здесь:

Удаление из строк C++
C++ удаление элемента
Удаление из массива C++
C++ Удаление
Массив удаление. C++
C++ Удаление строки
C++ Удаление памяти
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
23.01.2014, 14:24     Удаление из S1 - S2 #2
Harmonster, string - это имя типа. А вызывать нестатические методы нужно от объекта класса, а не от самого класса.

Не особо понял смысла вашего кода, но ошибки компиляции исправил:

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 <string>
#include <Windows.h>
using namespace std;
 
int main()
{
    string  string2, string3;
    cout << "String: ";
    getline(cin, string2);
    cout << "String 2: ";
    getline(cin, string3);
    for (int i = 0; i < string2.length(); i++)
    {
        for (int j = 0, k = 0; j < string3.length(); j++)
        {
            if (string2[i] != string3[j])
            {
                string3[k] = string3[i];
                k++;
            }
                
        }   
    }
    cout << string3 << endl;
}
экспериментируйте)
Harmonster
9 / 9 / 3
Регистрация: 20.05.2012
Сообщений: 101
23.01.2014, 14:31  [ТС]     Удаление из S1 - S2 #3
Спасибо за ответ! Ошибок компиляции у меня не было
1) Я создал две переменные типа string с названиями string, string2, string3
2) Ввел string и string2
3) В циклах проверил, если символ из string не равен символу из string2, то записал его в string3
Но сделал видимо неправильно
Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
23.01.2014, 14:35     Удаление из S1 - S2 #4
Цитата Сообщение от Harmonster Посмотреть сообщение
Я создал две переменные типа string с названиями string
Загляните в свою программу через неделю и попробуйте понять, где string - имя типа, а где объект данных...Это я про "немного странное" имя объекта данных...
Harmonster
9 / 9 / 3
Регистрация: 20.05.2012
Сообщений: 101
23.01.2014, 14:36  [ТС]     Удаление из S1 - S2 #5
Цитата Сообщение от Extrim88 Посмотреть сообщение
Загляните в свою программу через неделю и попробуйте понять, где string - имя типа, а где объект данных...Это я про "немного странное" имя объекта данных...
Да, я понимаю что так делать нельзя. Уже исправил, спасибо!
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
23.01.2014, 14:50     Удаление из S1 - S2 #6
Harmonster, Не нашлось лучше имени для объекта класса string?) Хотя бы string1

Добавлено через 13 минут
Harmonster,

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
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
 
int main()
{
    string string1, string2, string3;
    cout << "String: ";
    getline(cin, string1);
    cout << "String 2: ";
    getline(cin, string2);
    bool b = false;
    int pos = 0;
    for (int i = 0; i < string1.length(); i++)
    {
        b = false;
        for (int j = 0, k = 0; j < string2.length(); j++)
        {
            if (string1[i] == string2[j])
            {
                // если надено совпадение
                b = true;
                pos = j;
            }
        }   
 
        // если совпадений не было найдено
        if (!b)
        {
            string3 += string1[i];
        }
 
 
    }
    cout << string3 << endl;
 
    system("pause");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2014, 15:08     Удаление из S1 - S2
Еще ссылки по теме:

C++ Удаление комментрариев
удаление памяти C++
Удаление из файла C++
Удаление из файла C++
Удаление файла C++

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

Или воспользуйтесь поиском по форуму:
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
23.01.2014, 15:08     Удаление из S1 - S2 #7
Раз уж использовать stl то оп полной =).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
int main()
{
    string string2, string3;
    int c = 0;
    cout << "String: ";
    getline(cin, string2);
    cout << "String 2: ";
    getline(cin, string3);
    for_each(string3.begin(), string3.end(), [&string2](char c){ string2.erase(string2.find(c),1); });
    cout << string2 << endl;
    system("pause");
    return 0;
}
Yandex
Объявления
23.01.2014, 15:08     Удаление из S1 - S2
Ответ Создать тему
Опции темы

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