Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Часть 2. Работа с динамической строкой и перегрузка операций ⇐ ПредыдущаяСтр 2 из 2 Упражнение 4. Пользовательский класс String должен содержать необходимые элементы-данные, создаваемые в динамической области памяти. Конструктор для создания строк: String (...); Деструктор: ~String(); Метод ввода исходной строки Set(); Метод печати: void Print(...); Код методов - вне пространства определения класса. Программа иллюстрирует прямой и косвенный способы обращения к методам.
Варианты: Ввести строку символов S1, признак окончания ввода строки - нажатие клавиши Enter. Программа должна содержать перегруженную операцию «=», использование которой скопирует S1 в S2 при следующих условиях: 5. Без всех A..Z 6. Без скобок всех видов. Код программы: #include <iostream> #include <string.h> #include <windows.h> #include <conio.h> using namespace std; char bufRus[256];
char* Rus(const char* text) { CharToOem(text, bufRus); return bufRus; } class String { public: char *str; String (char *s="\0") // Конструктор для создания строк: { str = new char[strlen(s)+1]; strcpy(str,s); }
~String () //Деструктор { delete str; } //Метод ввода исходной строки void Set () { } void Print () { cout << str << endl; } friend String operator+(String, String); };
String operator+(String s1, String s2) { char *s; for (unsigned i = 0; i < strlen (s1.str); i ++) //Условие работы программы.
while (s1.str[i] >= 65 && s1.str[i] <= 90 || s1.str[i] ==40 && s1.str[i] ==41 && s1.str[i] ==91 && s1.str[i] ==93 && s1.str[i] ==123 && s1.str[i] ==125) for (unsigned j = i; j < strlen(s1.str); j ++) s1.str[j] = s1.str[j+1];
for (i = 0; i < strlen (s2.str); i ++) while (s2.str[i] >= 65 && s2.str[i] <= 90 || s2.str[i] ==40 && s2.str[i] ==41 && s2.str[i] ==91 && s2.str[i] ==93 && s2.str[i] ==123 && s2.str[i] ==125) for (unsigned j = i; j < strlen(s2.str); j ++) s2.str[j] = s2.str[j+1];
s = new char[strlen(s1.str)+strlen(s2.str)+1]; strcpy(s,s1.str); strcat(s,s2.str);
String s3(s); delete s; return s3; } void main (void) { char tmp1 [255]; char tmp2 [255]; cout<<Rus("Введите 1 строку: "); cin.getline(tmp1,255); String s1 (tmp1);
cout<<Rus("Введите 2 строку: "); cin.getline(tmp2,255); String s2 (tmp2); cout<<Rus("\nСтрока 2+1 без /A...Z/ и без скобок всех видов: ");
String s3 (""); s3 = s2 + s1; s3.Print(); getch(); } Скриншот: Вывод:
|