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

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

Войти
Регистрация
Восстановить пароль
 
sergentiy
0 / 0 / 0
Регистрация: 03.07.2015
Сообщений: 46
#1

Перегрузка оператора * и / для строки - C++

21.06.2016, 12:05. Просмотров 168. Ответов 5
Метки нет (Все метки)

Есть класс MyString нужно написать перезагрузку
Операция *: должна вернуть новую строку, которая возникнет путем пересечения двух строк, то есть их общие символы. Наприклад, результатом пересечения строк "Microsoft" и "Windows" будет строка "ioso".
Операция /: должна вернуть новую строку, которая возникнет путем отбора символов первой строки, которых нету в другой. Наприклад, результатом пересечения строк "Microsoft" и "Windows" буде строка "Mcrft".

Я накидал что-то типа

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char* operator * (MyString& str2)
    {
        for (char i = 0; i < strlen(this->strChar); i++)
        {
            for (char j = 0; j < strlen(str2.strChar); j++)
            {
                if (this->strChar[i] == str2.strChar[j])
                {
                    return this->strChar[i];
                }
            }
        }
    }
суть алгоритма примерно понятна, но как реализовать через перезагрузку... затрудняюсь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2016, 12:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка оператора * и / для строки (C++):

Перегрузка оператора + для структуры - C++
У нас есть две строки S1, S2 .После выполнения S3 = S1 + S2 : 1)в S3 должны быть символы входящие в S1 и в S2 одновременно. 2)Посчитать...

Перегрузка оператора для класса - C++
Здравствуйте! Подскажите, пожалуйста, почему так не работает: class ClassA { public: ClassA() { m = 1; ...

Перегрузка оператора + для стека - C++
Добрый день. Прошу помощи с перегрузкой этой операции. Цель: перегрузить + так,чтобы он складывал элементы двух стеков в третий.Вроде...

Перегрузка оператора == для string - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;stdlib.h&gt; using namespace std; class...

Перегрузка оператора << для шаблона - C++
У меня есть структура студенты, а класс-шаблон массив элементов. Как сделать оператор универсальным, подходящим для любых типов(и для...

Перегрузка оператора = для указателей - C++
Существует ли возможность предопределить оператор = для такого случая? Object* first = new Object(); Object second = first; //...

5
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
21.06.2016, 13:39 #2
Новый объект возвращаешь.
C++
1
MyString operator * (MyString& str2)
Цитата Сообщение от sergentiy Посмотреть сообщение
Наприклад
Что за выражение?
0
sergentiy
0 / 0 / 0
Регистрация: 03.07.2015
Сообщений: 46
21.06.2016, 15:04  [ТС] #3
например

Добавлено через 57 минут
можно ли что-то подобное сделать через string? Сравнить две строки, и в если символы совпадают - записать в новую строку. Может есть какие-то готовые функции?
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
21.06.2016, 15:26 #4
Ну какой пример? Возьми свой и добавь создание нового объекта MyString и заполнение его нужными символами, и потом возврат.
0
sergentiy
0 / 0 / 0
Регистрация: 03.07.2015
Сообщений: 46
21.06.2016, 17:00  [ТС] #5
примерно что-то такое, но не такое... я хоть в правильном направлении?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
MyString operator * (MyString& str2)
    {
        for (char i = 0; i < str.length; i++)
        {
            for (char j = 0; j < str2.str.length; j++)
            {
                if (this->str.length[i] == str2.str.length[j])
                {
                    return MyString(this->str.length[i]);
                }
            }
        }
    }
0
Krock21rus
74 / 74 / 19
Регистрация: 18.11.2013
Сообщений: 373
Завершенные тесты: 2
21.06.2016, 18:02 #6
Цитата Сообщение от sergentiy Посмотреть сообщение
результатом пересечения строк "Microsoft" и "Windows" будет строка "ioso"
сомневаюсь

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

Добавлено через 4 минуты
надо делать оптимальные алгоритмы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
friend MyString operator*(const MyString &s1, const MyString &s2)
{
 bool used[256];
 for(int i=0;i<256;i++) used[i] = false;
 for(int i=0;i<s2.size();i++)
  used[s2[i]] = true;
 MyString ans;
 for(int i=0;i<s1.size();i++)
  if(used[s1[i]])
   ans.push_back(s1[i]);
 return ans;
}
для 2ой задачи остаётся поменять
C++
1
if(used[s1[i]])
на
C++
1
if(!used[s1[i]])
Добавлено через 1 минуту
все методы подразумевают, что MyString == string
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2016, 18:02
Привет! Вот еще темы с ответами:

Перегрузка оператора + для класса Date - C++
Здравствуйте! Как правильно перегрузить оператор +(Date, int) для класса Date, чтобы дата увеличивалась на нужное количество дней? При этом...

Перегрузка оператора ++ для enum class - C++
Доброго времени суток. Имеется перечисление: enum class Month { jan = 1, feb, mar, apr, may, jun, jul, aug, sep, nov, dec ...

Перегрузка оператора сравнения (==) для массивов - C++
Имеется класс-массив. Нужно сравнить два массива при помощи перегрузки оператора (==) Помогите написать пожалуйста!!! class array ...

Перегрузка оператора + для динамической матрицы - C++
Народ тема такая нужно перегрузить оператор + для динамической матрицы . Ошибка походу в границах но я не могу понять где ? ...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
21.06.2016, 18:02
Ответ Создать тему
Опции темы

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