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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
mixon-21
 Аватар для mixon-21
3 / 3 / 0
Регистрация: 05.03.2013
Сообщений: 219
#1

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

31.07.2013, 15:46. Просмотров 1902. Ответов 12
Метки нет (Все метки)

Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. Например, результатом пересечения строк "sdqcg" "rgfas34" будет строка "sg". Для реализации функции перегрузить оператор * (бинарное умножение).


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
44
#include <iostream>
#include <string>
using namespace std;
class myString
{
private:
    string s1;
public:
    myString();
    myString(string x);
    myString operator+(const myString &b);
    void Display(void);
};
 
myString::myString()
{
}
 
myString::myString(string x)
{
s1=x;
}
 
myString myString::operator+(const myString &b)
{
myString result;
result.s1=s1+b.s1;
return result;
}
 
 
void myString::Display()
{
cout<<s1<<endl;
}
 
void main()
{
myString ekz1("mersedes"),ekz2("porshe"),ekz3=ekz1+ekz2;
ekz3.Display();
system ("color 2");
 
system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2013, 15:46     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк.
Посмотрите здесь:

C++ Составить функцию конкатенации (слияния) двух строк
Создайте класс Date. Добавить в строковый класс функцию C++
Добавить в строковый класс функцию C++
Создать функцию, которая формирует строку, включив в нее все совпадающие символы двух строк C++
C++ Найти общие для двух данных строк слова
Сравнить символы двух заданных строк в С++ C++
Матрицы: Написать функцию, которая находит произведение ненулевых элементов двух строк матрицы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,164
Завершенные тесты: 2
31.07.2013, 15:59     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. #2
Цитата Сообщение от mixon-21 Посмотреть сообщение
Для реализации функции перегрузить оператор *
и где? не выполнено! два, учить домой!

наработки хоть какие нибудь есть?
и какой срам оборачивать std::string! образовательной функции это никакой не несет
Valentina
68 / 68 / 3
Регистрация: 13.05.2012
Сообщений: 130
31.07.2013, 16:40     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. #3
вот что у меня получилось
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
class myString
{
private:
    string s1;
public:
    myString();
    myString(string x);
    myString operator+(const myString &b);
    myString operator*(const myString &b);
    void Display(void);
};
 
myString::myString()
{
}
 
myString::myString(string x)
{
s1=x;
}
 
myString myString::operator+(const myString &b)
{
myString result;
result.s1=s1+b.s1;
return result;
}
myString myString::operator*(const myString &b)
{
    myString result;
    const char* first = s1.c_str(), *second = b.s1.c_str(), *p;
    int i=0;
    char ch[100]=" ";
    for ( p = first; *p; ++p )
        if ( strchr(second, *p) )
        {ch[i++]=*p;}
        result.s1=(const char*)ch;
        return result;
}
    
 
 
 
void myString::Display()
{
cout<<s1<<endl;
}
 
void main()
{
myString ekz1("mersedes"),ekz2("porshe"),ekz3=ekz1*ekz2;
ekz3.Display();
system ("color 2");
 
system("pause");
}
mixon-21
 Аватар для mixon-21
3 / 3 / 0
Регистрация: 05.03.2013
Сообщений: 219
31.07.2013, 16:40  [ТС]     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. #4
Цитата Сообщение от Кудаив Посмотреть сообщение
и где? не выполнено! два, учить домой!

наработки хоть какие нибудь есть?
и какой срам оборачивать std::string! образовательной функции это никакой не несет
так подскажи
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,164
Завершенные тесты: 2
31.07.2013, 17:23     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. #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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <cstring>
 
class myString
{
private:
    char*    m_array;
    unsigned m_size;
public:
    myString();
    myString(const char* x);
    myString operator+(const myString &b);
    void Display(void);
};
 
myString::myString()
{
    m_array = new char[10];
    m_array[0] = '\0';
    m_size = 0; 
}
 
myString::~myString
{
   delete[] m_array;
}
 
myString::myString(const char*str)
{
    if(strlen(str) > m_size)
    {
       delete[] m_array;
       m_size = strlen(str);
       m_array = new char[m_size + 1];
       strcpy(m_array, str);
    }
    else
    {
        strcpy(m_array, str);
        m_size = strlen(str);
    }
}
и в таком духе
Cerbery-San
1 / 1 / 0
Регистрация: 23.07.2013
Сообщений: 24
31.07.2013, 18:02     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. #6
Вот еще 2 варианта реализации

При таком подходе порядок следования совместных символов не соблюдается
C#
1
2
3
4
5
6
7
8
9
10
11
12
#include <algorithm>
#include <iterator>
 
myString myString::operator*(const myString &b)
{
    sort(s1.begin(), s1.end());
    sort(b.s1.begin(), b.s1.end());
    myString result;
    set_intersection(s1.begin(), s1.end(), b.s1.begin(), b.s1.end(),
                     inserter(result.s1, result.s1.begin()));
    return result;
}
Так соблюдается
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
myString myString::operator*(const myString &b)
{
    myString result;
    for (int i=0; i<s1.length(); ++i)
    {
        for (int j=0; j<b.s1.length(); ++j)
        {
            if  (s1[i] == b.s1[j])
                result.s1+=s1[i];
        }
    }
    return result;
}
Внимание код не компилил! Набросал по бырому
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
01.08.2013, 08:11     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. #7
Цитата Сообщение от mixon-21 Посмотреть сообщение
Например, результатом пересечения строк "sdqcg" "rgfas34" будет строка "sg".
не совсем понятно, по какому принципу строится это пересечение...
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12520 / 7082 / 797
Регистрация: 27.09.2012
Сообщений: 17,491
Записей в блоге: 2
Завершенные тесты: 1
01.08.2013, 08:16     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. #8
Цитата Сообщение от salam Посмотреть сообщение
не совсем понятно, по какому принципу строится это пересечение...
Цитата Сообщение от mixon-21 Посмотреть сообщение
"sdqcg" "rgfas34" будет строка "sg"
множество же
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
01.08.2013, 08:58     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. #9
Цитата Сообщение от Croessmah Посмотреть сообщение
множество же
конкретизирую: почему "sg", а не "gs"?
Wolkodav
 Аватар для Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
01.08.2013, 09:28     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. #10
Кудаив, а у вас компилируется код? Меня просто немного смущает тип 'unsigned'. Наверное вы имели ввиду unsigned int?
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,164
Завершенные тесты: 2
01.08.2013, 15:15     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. #11
Wolkodav,
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
int main()
{
    unsigned i = 42;
    std::cout << i << std::endl;
    return 0;
}
что unsigned, что unsigned int
Wolkodav
 Аватар для Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
01.08.2013, 15:49     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. #12
Кудаив, ладно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2014, 16:36     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк.
Еще ссылки по теме:

Общие символы для двух строк(своего класса) через перегрузку оператора C++
C++ Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк
Реализовать функцию конкатенации двух строк C++
C++ Как вывести одну строку состоящую из двух строк ?
C++ Построить строку в которую войдут только общие символы двух строк в алфавитном порядке и без повторений

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

Или воспользуйтесь поиском по форуму:
HEEEELP
Сообщений: n/a
03.07.2014, 16:36     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. #13
valentina, а можно минимальные комменты к коду? плиз)))
Yandex
Объявления
03.07.2014, 16:36     Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк.
Ответ Создать тему
Опции темы

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