0 / 0 / 0
Регистрация: 15.11.2020
Сообщений: 17
1

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

04.04.2022, 13:20. Показов 729. Ответов 0

Author24 — интернет-сервис помощи студентам
Здравствуйте.У меня вот такая задача:
Создать класс для работы со строчками. Максимальная длина последовательности – 254. Первый байт должен содержать информацию о фактическом количестве элементов массива. Совершить перегрузку операций:
- "=" – присвоение,

- "+" – конкатенация (соединение) строк,

- "<=" – отношение "меньше или равно",

- " >= " – отношение "больше или равно",

- "==" – отношение "равно",

- "!=" – отношение "не равно".

В классе предусмотреть конструктор инициализации, конструктор копирования, деструктор.


Вот мой код
Файл main.cpp
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
#include <iostream>
#include <string.h>
#include "line.h"
 
 
using namespace std;
 
int main(){
    setlocale(LC_ALL , "Rus");
    String input1,input2;
    int change;
    cout << "Введите первую строку: ";
    cin >> input1;
    cout << "Введите вторую строку: ";
    cin >> input2;
    cout << "\t\tДействия" << endl;
    cout << "1.Присваивание строк;" << endl;
    cout << "2.Конкатенация строк;" << endl;
    cout << "3.Отношение(больше или равно);" << endl;
    cout << "4.Отношение(меньше или равно);" << endl;
    cout << "5.Отношение(равно);" << endl;
    cout << "6.Отношение(не равно)." << endl;
    cout << "Выбор: ";
    cin >> change;  
    switch(change){
        case 1:{
            input2 = input1;
            cout << "Результат: " << input2 << endl;;
            break;
        }
        case 2:{
            String result = input1 + input2;
            cout << "Результат конкатенации: " << result << endl;
            break;
        }
        case 3:{                  
            bool result = input1 >= input2;
            if(result == true){
                cout << "Первая строка больше либо равно второй" << endl;
            }
            else{
                cout << "Первая строка меньше второй" << endl;
            }
            break;  
        }
        case 4:{
            bool result = input1 <= input2;
            if(result == true){
                cout << "Первая строка меньше либо равно второй" << endl;
            }
            else{
                cout << "Первая строка больше второй" << endl;
            }
            break;  
        }
        case 5:{
            if((input1 == input2) == true){
                cout << "Равны"    << endl;
            }
            else{
                cout << "Не равны" << endl; 
            }                  
            break;
        }
        case 6:{
            bool result = input1 != input2;
            if(result == true){
                cout << "Первая строка не равна второй" << endl;
            }
            else{
                cout << "Первая строка равна второй" << endl;
            }
            break;
        }
        
        default:{
            cout << "Ошибка..." << endl;
            return 1;
            break;
        }
    } 
    return 0;
}
Файл line.h:
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
119
120
121
122
123
#include <iostream>
 
using namespace std;
 
class String{ 
public:
    char *str;
 
    String();
    ~String();
    
    String(const String &other);
    
    String operator = (String &line);
    String operator + (String &line);
    bool operator <= (String &line);
    bool operator >= (String &line);
    bool operator == (String &line);
    bool operator != (String &line);
    
    friend  ostream &operator<<(ostream &stream, String& obj);
    friend  istream &operator>>(istream &stream, String& obj);
    
    void strcopy(char *str1,char *str2);
    char mystrcat(char *str1,const char *str2);
    int strlenght(const char *str);
    
};
 
String::String(){
    str = new char[256];
}
    
String::~String(){
    delete[] str;
}
 
String::String(const String &other){
    str = new char[256];
    strcopy(str,other.str);
}  
 
String String::operator = (String &line){
    strcopy(str,line.str);
    return *this;
}
 
String String::operator + (String &line){
    mystrcat(str,line.str);
    return *this;
}
 
bool String::operator >= (String &line){
    if(strlenght(str) >= strlenght(line.str)){
        return true;
    }
    else{
        return false;
    }
}
 
bool String::operator <= (String &line){
    if(strlenght(str) <= strlenght(line.str)){
        return true;
    }
    else{
        return false;
    }
}
 
bool String::operator != (String &line){
    if(strlenght(str) != strlenght(line.str)){
        return true;
    }   
    else{
        return false;
    }
}  
 
bool String::operator == (String &line){
}
 
 
ostream &operator<<(ostream &stream, String &obj)
{
    stream<<obj.str;
    return stream;
}
 
istream &operator>>(istream &stream, String &obj)
{
    stream>>obj.str;
    return stream;
}
 
 
void String::strcopy(char *str1,char *str2){
    while(*str1++ = *str2++);   
}
 
char String::mystrcat(char *str1,const char *str2){
    char *begin = str1;
    
    while(*str1){
        str1++;
    }
    while(*str1++ = *str2++);
    
    
    *str1 = '\0';
    return *begin;
}
 
 
int String::strlenght(const char *str){
    int counter = 0;
    while(*str != '\0'){
        counter++;
        str++;
    }
    
    return counter;
}
Код работает вроде как надо,но у меня не получаеться реализовать условие Максимальная длина последовательности – 254. Первый байт должен содержать информацию о фактическом количестве элементов массива
Помогите пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2022, 13:20
Ответы с готовыми решениями:

Создать класс для работы сo строками
Создать класс для работы сo строками. Разработать элементы класса: a. Поля: * указатель на char...

Создать класс BitString для работы с битовыми строками
Вопрос: если даны строки разной длины, то каким образом выполняются побитовые операции? До старшего...

Создать динамический класс для работы со строками символов
Создать класс для работы со строками (последовательностями символов). Максимальная длина...

Создать динамический класс для работы со строками символов
Создать динамический класс для работы со строками символов. Максимальная длина последовательности -...

Создать динамический класс для работы со строками символов
Создать динамический класс для работы со строками символов.Предвидеть функции для внесения символов...

0
04.04.2022, 13:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2022, 13:20
Помогаю со студенческими работами здесь

Создать динамический класс для работы со строками (последовательностями символов)
пишу код для такой задачи :Создать динамический класс для работы со строками (последовательностями...

Создать динамический класс для работы со строками (последовательностями символов)
Добрый день,товарищи. Можете мне объяснить логику задачи на с++. Вот сама задача. Создать...

Создать динамический класс для работы со строками. Перегрузка строкового класса
Форумчане, помогите пожалуйста с задачей. Никак не пойму как перегрузить часть операторов. Вот...

Создать класс BitString для работы с битовыми строками не более чем из 100 бит
Написать код на языке C++ Создать класс BitString для работы с битовыми строками не более чем из...

Создать класс BitString для работы с битовыми строками не более чем из 100 бит
Создать класс BitString для работы с битовыми строками не более чем из 100 бит. Битовая строка...

Создать класс BitString для работы с битовыми строками не более чем из 100 бит. Битовая строка должна быть представлена
Создать класс BitString для работы с битовыми строками не более чем из 100 бит. Битовая строка...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru