МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ СУМСЬКИЙ ДЕРЖАВНИЙ УНІВЕРСИТЕТ КАФЕДРА КОМП’ЮТЕРНИХ НАУК СЕКЦІЯ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ ПРОЕКТУВАННЯ ЗВІТ З ЛАБОРАТОРНОЇ РОБОТИ №12 з дисципліни «Основи об'єктно-орієнтованого програмування» Виконав: студент групи Варіант: №12 Перевірив: Нагорний В.В. 2021 1.Постановка задачі. Варіант 12 Розробити клас MyString, який буде представляти рядок. У класі зберігається ЛИШЕ покажчик на рядок. Пам’ятайте, що ознакою кінця рядка в стандарті мови С++ вважається символ ’\0’. В класі обов’язково повинні бути такі методи. Конструктор за замовчуванням – створює об’єкт – пустий рядок. Конструктор, що приймає у якості параметру значення n – створює рядок довжиною n символів. Метод, що визначає довжину рядка. Для парних варінатів - Метод, що перевизначає операцію « + » – створює новий рядок, що є об’єднанням двох об’єктів-рядків. Наприклад, маємо два об’єкти, що містять «Прик» та «лад» відповідно. В результаті роботи методу має створитися новий рядок зі змістом «Приклад». 2.Текст програми #include class MyString { public: MyString() { string = (char*)malloc(1); string[0] = 0; } MyString(int n); //Методи void Review(); void Add(char* n1, char* n2); int Rdovsh(); private: char* string; }; int main() { setlocale(LC_ALL, "ukr"); system("color 0A"); MyString obj; std::cout << "Довжина пустого рядка(повинна бути 0): " << obj.Rdovsh() << '\n'; MyString obj1(44); obj.Review(); std::cout << "Довжина рядка: " << obj1.Rdovsh() << '\n'; std::cout << '\n'; char a[] = "09.11.2021 - Це"; char b[] = " останнiй день здачi 12 лаби"; std::cout << "Рядок 1: " << a << '\n'; std::cout << "Рядок 2: " << b << '\n'; obj1.Add(a, b); std::cout << "Результат: "; obj1.Review(); std::cout << "Довжина рядка: " << obj1.Rdovsh() << '\n'; std::cout << '\n'; system("pause"); return 0; } MyString::MyString(int n) { int i; string = (char*)malloc((n + 1) * sizeof(char)); for (i = 0; i < n; i++) { string[i] = 32; } string[n] = 0; } //довжина рядка int MyString::Rdovsh() { int l = _msize(string) - 1; return l; } //виводить рядок в консоль void MyString::Review() { std::cout << string << '\n'; } //утворює один рядок void MyString::Add(char* n1, char* n2) { int i, n, m; n = strlen(n1); m = strlen(n2); string = (char*)malloc((n + m + 1) * sizeof(char)); for (i = 0; i < n; i++) { string[i] = n1[i]; } for (i = n; i < (n + m); i++) { string[i] = n2[i - n]; } string[n + m] = 0; } 3.Контрольний приклад |