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

реализация класса строка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить, есть ли в массиве... http://www.cyberforum.ru/cpp-beginners/thread423126.html
Определить, есть ли в массиве L значение, равное (min +max) / 2 и вывести его номер. Удалить это значение в массиве.
C++ компилятор c++ Решил вот обратиться к умным людям насчет c++. Подумал я и решил начать изучать c++, ибо паскаль уже, скажем так, не "катит". Поспрашивал насчет компилятора - посоветовали Microsoft Visual Studio.... http://www.cyberforum.ru/cpp-beginners/thread423115.html
C++ прога вычисляет не правильно
Задание к работе Пользовательский класс должен содержать необходимые элементы-данные, метод установки их начальных значений: Void set(double X, …); метод печати: Void print(void); метод,...
C++ Найти произведение элементов побочной диагонали матрицы Х(6,6).
Помогите плиз на Turbo C
C++ Задача число и число записанное в обратном направлении сумма целого числа http://www.cyberforum.ru/cpp-beginners/thread423091.html
ПОЖАЛУЙСТА помогите составить программу на соde::bloks c++,только начал учится в колегии после 10 лет перерыва между школой. Задача число и число записанное в обратном направлении сумма целого...
C++ Найти количество пятниц с 1 января 2001 по 31 декабря 2010. И найти количество пятниц, 13 Если кто знает как решить помогите подробнее

Показать сообщение отдельно
TimeTwo
71 / 71 / 32
Регистрация: 29.11.2009
Сообщений: 326

реализация класса строка - C++

05.01.2012, 22:59. Просмотров 1145. Ответов 13
Метки (Все метки)

не могу понять как реализовать ... помогите вот там где "???????????" там абсолютно непонятно, что мне делать....

задание: реализовать класс строка с динамическим кол-вом эел-тов, требования:
1) возврат подстроки (вывести элементы из строки например с 3 по 5)
2) изменить размер строки путем добавления в конец пустых символов
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
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <iostream.h>
#include <cstring.h>
 
class String                    
{
   private:
       char* S;   
       size_t len;  
   public:
                String();                   
                String(const char *s);     
                String(const String &s);  
                ~String(){ delete [] S;}          
                
        istream& operator>>(istream&, String&); //  Функция реализует ввод объектов класса с клавиатуры
    ostream& operator<<(ostream&, const String&); //  Функция реализует вывод объектов класса на экран
    char& operator[] (int index) const
                {
                        if (index < 0 || index >= len)
                        {
                                cout << "Выход за рамки." << endl;
                                exit(1);
                        }
                        return S[index];
                }
    size_t GetLen() //  Функция возвращает длину строки
                { 
                        return len;
                }  
    void SubStr (int x, int c) // вывод произвольной подстроки
                {
                        // ????????????
                }
        void Rec (int i, char a) // Запись подствроки в строку
                {
                        // ????????????
                }
    void Space (int n) // Добавление пустых символов 
        {
            // ????????????
        }
        bool Empty ()
                {
                        if (len != 0)
                        {
                                cout << "Строка не пустая" << endl;
                                return true;
                        }
                        else
                        {
                                cout << "Строка пустая" << endl;
                                return false;
                        }
                }
 
};
 
 
istream& operator>>(istream& is, String& str)
{
    const int N = 65536;
    char temp[N] = {0};// Временный массив для многострочного ввода
    size_t Length = 0, //длина последней введенной строки, 
    Total = 0; //общая длина ввода;
    do   // ввод продолжается до ввода пустой строки
    {
        is.getline(temp + Total, N - Total); // запрашиваем строку
        Length = strlen(temp + Total);// замеряем длину введенной строки
        if(Length == 0) // если строка пуста
                {
            break;
                }
        Total += Length + 1 ; // увеличиваем общую длину   1 - это \n 
        temp[Total - 1] = '\n';         
    } while (Total < N);
    temp[Total - 1] = 0; // Убираем последний Enter
    str = temp;// вызываем конструктор преобразования и перегруженный оператор присваивания
        return is;
}
   
 
ostream& operator<<(ostream& os, const String& str)
{
    os << str.S;                //  Вывод строки
    return os;                  //  Возврат объекта вывода
}
 
 
int main()
{
        setlocale (LC_ALL, "Rus");
        int UserChoise, n, z;
        char x;
        String a, b, c;
    cout << "Введите строку: ";
    cin >> a;
        do 
        {
                cout << endl;
                cout << "          Меню" << endl;
                cout << "==========================================" << endl;
                cout << " [1] Чтение подстроки" << endl;
                cout << " [2] Добавление пустых символов" << endl;
                cout << " [3] Вставка подстроки в строку" << endl;
                cout << " [4] Выход" << endl;
                cout << "==========================================" << endl;
                cout << endl;
                cout << "Ваш выбор : ";
                cin >> UserChoise;
                cout << endl;
                switch (UserChoise)
                {
                        
                        case 1: 
                cout << "Введите индекс первого элемента: ";
                                cin >> z;
                                cout << "Введите кол-во символов: ";
                                cin >> n;
                                c.SubStr(z, n);
                                cout << endl;
                                break;
                        case 2:
                                cout << "Введите кол-во пустых символов: ";
                                cin >> n;
                                c.Space(n);
                                cout << endl;
                                break;
                        
                        case 3: 
                    cout << "Введите индекс элемента после которого осуществлять вставку: ";
                                cin >> z;
                                cout << "Введите подстроку: ";
                                cin >> b;
                                c.SubStr(z, n);
                                cout << endl;
                                break; 
                                
                        case 4:
                                cout << "ПОКА !!!!" << endl;
                                break;
                        
                        default:
                                cout << endl << "Неправильный выбор! Попробуйте снова." << endl;
                }
                
        } while (UserChoise != 4);
   
        return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.