Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
6 / 6 / 1
Регистрация: 14.11.2016
Сообщений: 45

Разработать класс String для работы со строками

27.03.2017, 20:54. Показов 4567. Ответов 9

Студворк — интернет-сервис помощи студентам
Разработать программу, демонстрирующую работу с производным от приведенного в примере класса. Класс должен включать три метода работы со строками:
1) Удаляет из текста строки все буквы малого регистра;
2) удаляет все предложения с количеством букв, больше N;
3) выполняет поиск слов в строке, соответствующих заданному, и выводит в столбец позиции найденных последовательностей.

Пример выполнения задания
Разработать класс, что включает три метода работы со строками:
1) Метод смены регистра символа;
2) метод выделения в строке символа или совокупности символов;
3) метод получения суммы ASCII кодов символов строки.

Код программы-примера:
Кликните здесь для просмотра всего текста
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
#include <string>
using namespace std;
 
class CBaseString
{
public:
    char ChangeCharReg(unsigned char c);
    string SelectString(string s, string subs);
    int GetStringWeight(string subs);
};
char CBaseString::ChangeCharReg(unsigned char c)
{
    if (c>=65 && c<=90)
        return c+32;
    else if (c>=97 && c<=122)
        return c-32;
    else if (c>=128 && c<=143)
        return c+32;
    else if (c>=144 && c<=159)
        return c+80;
    else if (c>=160 && c<=175)
        return c-32;
    else if (c>=224 && c<=239)
        return c-80;
    else if (c==240)
        return c+1;
    else if (c==241)
        return c-1;
    else
        return c;
}
string CBaseString::SelectString(string s, string subs)
{
    string str;
    int n;
    while ((n=s.find(subs))>-1)
    {
        str+=s.substr(0,n);
        str+='('+subs+')';
        s=s.substr(n+subs.length(),s.length()-n-subs.length()+1);
    }
    str+=s;
    return str;
}
int CBaseString::GetStringWeight(string subs)
{
    int sum=0;
    for (int i=0; i<subs.length(); i++)
    {
        sum+=subs.at(i);
    }
    return sum;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.03.2017, 20:54
Ответы с готовыми решениями:

Разработать класс String для работы со строками
/*Разработать класс String для работы со строками. Класс должен содержать: - Конструктор по умолчанию, позволяющий создать строку...

Разработать класс String для работы со строками
разработать класс String для работы со строками. Класс должен содержать контср по умолчанию, контсруктор копирования. Перегрузить в этом...

Разработать класс String для работы со строками
Не могу разобраться с проблемой. Вроде все сделал, как надо, а ошибка повторяется: #include &lt;iostream&gt; #include &lt;string&gt; ...

9
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,814
27.03.2017, 20:55
Max_Timokhin, а вопрос в чём? Или Вы просто решили поделиться своими трудами с другими студентами?
0
6 / 6 / 1
Регистрация: 14.11.2016
Сообщений: 45
27.03.2017, 21:07  [ТС]
Nishen, мне нужно написать программу:
Разработать класс, что включает три метода работы со строками:
1) Удаляет из текста строки все буквы малого регистра;
2) удаляет все предложения с количеством букв, больше N;
3) выполняет поиск слов в строке, соответствующих заданному, и выводит в столбец позиции найденных последовательностей.
А снизу я дал пример, который написан у меня в учебнике. И мне нужно, основываясь на этом примере написать свою программу.
0
 Аватар для 0xb01e0
3 / 3 / 4
Регистрация: 27.03.2017
Сообщений: 11
28.03.2017, 06:00
Лучший ответ Сообщение было отмечено Max_Timokhin как решение

Решение

header
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef STRINGCLASS_H
#define STRINGCLASS_H
 
#include <iostream>
 
using namespace std;
 
class StringClass {
private:
    string text;
 
public:
    StringClass();
    ~StringClass();
 
    const string getText() const;
    void setText(const string& text);
    void removeLowerCase();
    void removeWordsGreaterThanN(const int N);
    void printWordSequence(const string& text);
};
 
#endif // STRINGCLASS_H


source
Кликните здесь для просмотра всего текста
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <cctype>
#include <cstring>
#include "stringclass.h"
 
StringClass::StringClass() {}
 
StringClass::~StringClass() {}
 
const string StringClass::getText() const {
    return this->text;
}
 
void StringClass::setText(const string& text) {
    this->text = text;
}
 
void StringClass::removeLowerCase() {
    string temp = getText();
    string result = "";
 
    for (int i = 0; temp[i] != '\0'; i++)
    {
        if (!islower(temp[i]))
        {
            result += temp[i];
        }
    }
    setText(result);
}
 
void StringClass::removeWordsGreaterThanN(const int N) {
    string temp = getText();
    string result = "";
 
    for (int i = 0, j = 0, counter = 1; temp[i] != '\0'; i++)
    {
        if(isalpha(temp[i]))
        {
            j = i;
 
            for ( ; temp[j] != '\0' && isalpha(temp[j]); j++)
            {
                counter++;
            }
 
            if (counter <= N)
            {
                for ( ; i < j; i++)
                {
                    result += temp[i];
                }
            }
            counter = 0;
            i = j;
        }
        result += temp[i];
    }
 
    setText(result);
}
 
void StringClass::printWordSequence(const string& text) {
    string temp = getText();
    int counter = 0;
 
    for (int i = 0, j = 0; temp[i] != '\0'; i++)
    {
        j = i;
 
        if (isalpha(temp[j]))
        {
            while(isalpha(temp[j]) && temp[j] != '\0')
            {
                j++;
            }
 
            counter++;
 
            if (temp.substr(i, text.size()).compare(text) == 0)
            {
                cout << counter << endl;
            }
        }
 
        i = j;
    }
}


Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stringclass.h"
 
int main()
{
    StringClass stringClass;
 
    stringClass.setText("Hello, Siri! Hi, I have a boyfriend!");
    stringClass.removeLowerCase();
    cout << stringClass.getText() << endl;
 
    stringClass.setText("Hello, Siri! Hi, I have a boyfriend!");
    stringClass.removeWordsGreaterThanN(4);
    cout << stringClass.getText() << endl;
 
    stringClass.setText("Hello, Siri! Hi, I have a boyfriend!");
    stringClass.printWordSequence("have");
 
    return 0;
}


output
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
in: "Hello, Siri! Hi, I have a boyfriend!"
out: "H, S! H, I   !"
 
in: "Hello, Siri! Hi, I have a boyfriend!"
out: ", Siri! Hi, I have a !"
 
in: "Hello, Siri! Hi, I have a boyfriend!"
out: 5
0
6 / 6 / 1
Регистрация: 14.11.2016
Сообщений: 45
28.03.2017, 22:30  [ТС]
0xb01e0, спасибо! А как это оформить в одно целое? Чтоб был листинг программы, которую можно запустить.
0
 Аватар для 0xb01e0
3 / 3 / 4
Регистрация: 27.03.2017
Сообщений: 11
28.03.2017, 22:43
Цитата Сообщение от Max_Timokhin Посмотреть сообщение
А как это оформить в одно целое? Чтоб был листинг программы, которую можно запустить.
смотря в какой среде работаешь, нужно чтобы все эти три файла находились в одной папке, руками компиляцию можно выполнить так:
для unix систем:
Bash
1
g++ *.cpp && ./a.out
для винды:
Bash
1
g++ *.cpp && ./a.exe
0
6 / 6 / 1
Регистрация: 14.11.2016
Сообщений: 45
28.03.2017, 22:48  [ТС]
0xb01e0, для винды. Возможно ли так, чтоб это все было одним кодом записано и выводилось на консоли? То есть, в одном файле чтоб все это было.
0
 Аватар для 0xb01e0
3 / 3 / 4
Регистрация: 27.03.2017
Сообщений: 11
28.03.2017, 23:05
Лучший ответ Сообщение было отмечено Max_Timokhin как решение

Решение

Цитата Сообщение от Max_Timokhin Посмотреть сообщение
чтоб это все было одним кодом записано и выводилось на консоли
сделал в один файл, держи:
Кликните здесь для просмотра всего текста
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <iostream>
#include <cctype>
#include <cstring>
 
using namespace std;
 
class StringClass
{
private:
    string text;
 
public:
    StringClass() {}
    ~StringClass() {}
 
    const string getText() const
    {
        return this->text;
    }
 
    void setText(const string& text)
    {
        this->text = text;
    }
 
    void removeLowerCase()
    {
        string temp = getText();
        string result = "";
     
        for (int i = 0; temp[i] != '\0'; i++)
        {
            if (!islower(temp[i]))
            {
                result += temp[i];
            }
        }
        setText(result);
    }
 
    void removeWordsGreaterThanN(const int N)
    {
        string temp = getText();
        string result = "";
     
        for (int i = 0, j = 0, counter = 1; temp[i] != '\0'; i++)
        {
            if(isalpha(temp[i]))
            {
                j = i;
     
                for ( ; temp[j] != '\0' && isalpha(temp[j]); j++)
                {
                    counter++;
                }
     
                if (counter <= N)
                {
                    for ( ; i < j; i++)
                    {
                        result += temp[i];
                    }
                }
                counter = 0;
                i = j;
            }
            result += temp[i];
        }
     
        setText(result);
    }
 
    void printWordSequence(const string& text)
    {
        string temp = getText();
        int counter = 0;
     
        for (int i = 0, j = 0; temp[i] != '\0'; i++)
        {
            j = i;
     
            if (isalpha(temp[j]))
            {
                while(isalpha(temp[j]) && temp[j] != '\0')
                {
                    j++;
                }
     
                counter++;
     
                if (temp.substr(i, text.size()).compare(text) == 0)
                {
                    cout << counter << endl;
                }
            }
     
            i = j;
        }
    }
};
 
int main()
{
    StringClass stringClass;
 
    stringClass.setText("Hello, Siri! Hi, I have a boyfriend!");
    stringClass.removeLowerCase();
    cout << stringClass.getText() << endl;
 
    stringClass.setText("Hello, Siri! Hi, I have a boyfriend!");
    stringClass.removeWordsGreaterThanN(4);
    cout << stringClass.getText() << endl;
 
    stringClass.setText("Hello, Siri! Hi, I have a boyfriend!");
    stringClass.printWordSequence("have");
 
    return 0;
}
0
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
28.03.2017, 23:08
0xb01e0,
Цитата Сообщение от Max_Timokhin Посмотреть сообщение
Разработать класс String для работы со строками
Цитата Сообщение от 0xb01e0 Посмотреть сообщение
header
C++
1
2
3
class StringClass {
private:
  string text;
Гениально)
0
6 / 6 / 1
Регистрация: 14.11.2016
Сообщений: 45
28.03.2017, 23:10  [ТС]
0xb01e0, спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2017, 23:10
Помогаю со студенческими работами здесь

Разработать класс String, который в дальнейшем будет использоваться для работы со строками.
Всем доброго времени суток! Помогите пожалуйста т.к я не очень понимаю задание, что от меня требуется, распишите по пунктам, что мне...

Разработать класс String, который в дальнейшем будет использоваться для работы со строками
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; using namespace std; class string_ { char *s; ...

Разработать класс String, который в дальнейшем будет использоваться для работы со строками
Всем доброго времени суток! Вот задание: Разработать класс String, который в дальнейшем будет использоваться для работы со...

Создайте класс String для работы со строками
народ помогите пожалуйста, классы тяжко даются:( 1. код корректен? 2. не могу сообразить как написать функцию bool hasSubstring # ...

Перегрузка операторов. Реализовать класс String для работы со строками символов. Перегрузить операторы «=», «+=»
Реализовать класс String для работы со строками символов. Перегрузить операторы «=», «+=» так, чтобы производилось сложение строки и...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru