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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить, есть ли в массиве... http://www.cyberforum.ru/cpp-beginners/thread423126.html
Определить, есть ли в массиве L значение, равное (min +max) / 2 и вывести его номер. Удалить это значение в массиве.
C++ компилятор c++ Решил вот обратиться к умным людям насчет c++. Подумал я и решил начать изучать c++, ибо паскаль уже, скажем так, не "катит". Поспрашивал насчет компилятора - посоветовали Microsoft Visual Studio. Поставил, скачал достаточно много книг и туториалов для чайников по языкам c/c++. И тут же меня настигли неудачи: многие библиотеки, описываемые в книгах отсутствуют, ну по крайней мере VS пишет что... http://www.cyberforum.ru/cpp-beginners/thread423115.html
C++ прога вычисляет не правильно
Задание к работе Пользовательский класс должен содержать необходимые элементы-данные, метод установки их начальных значений: Void set(double X, …); метод печати: Void print(void); метод, решающий поставленную задачу: Void Run(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
68 / 68 / 31
Регистрация: 29.11.2009
Сообщений: 318
05.01.2012, 22:59     реализация класса строка
не могу понять как реализовать ... помогите вот там где "???????????" там абсолютно непонятно, что мне делать....

задание: реализовать класс строка с динамическим кол-вом эел-тов, требования:
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru