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

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

Восстановить пароль Регистрация
 
sergentiy
0 / 0 / 0
Регистрация: 03.07.2015
Сообщений: 39
21.06.2016, 12:05     Перегрузка оператора * и / для строки #1
Есть класс 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];
                }
            }
        }
    }
суть алгоритма примерно понятна, но как реализовать через перезагрузку... затрудняюсь
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4265 / 3696 / 1243
Регистрация: 14.04.2014
Сообщений: 14,479
21.06.2016, 13:39     Перегрузка оператора * и / для строки #2
Новый объект возвращаешь.
C++
1
MyString operator * (MyString& str2)
Цитата Сообщение от sergentiy Посмотреть сообщение
Наприклад
Что за выражение?
sergentiy
0 / 0 / 0
Регистрация: 03.07.2015
Сообщений: 39
21.06.2016, 15:04  [ТС]     Перегрузка оператора * и / для строки #3
например

Добавлено через 57 минут
можно ли что-то подобное сделать через string? Сравнить две строки, и в если символы совпадают - записать в новую строку. Может есть какие-то готовые функции?
nmcf
4265 / 3696 / 1243
Регистрация: 14.04.2014
Сообщений: 14,479
21.06.2016, 15:26     Перегрузка оператора * и / для строки #4
Ну какой пример? Возьми свой и добавь создание нового объекта MyString и заполнение его нужными символами, и потом возврат.
sergentiy
0 / 0 / 0
Регистрация: 03.07.2015
Сообщений: 39
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]);
                }
            }
        }
    }
Krock21rus
73 / 73 / 19
Регистрация: 18.11.2013
Сообщений: 369
Завершенные тесты: 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
Yandex
Объявления
21.06.2016, 18:02     Перегрузка оператора * и / для строки
Ответ Создать тему
Опции темы

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