Ім'я файлу: ЛР12__ООП.docx
Розширення: docx
Розмір: 34кб.
Дата: 18.12.2021
скачати

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

СУМСЬКИЙ ДЕРЖАВНИЙ УНІВЕРСИТЕТ КАФЕДРА КОМП’ЮТЕРНИХ НАУК

СЕКЦІЯ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ

ПРОЕКТУВАННЯ

ЗВІТ З ЛАБОРАТОРНОЇ РОБОТИ №12

з дисципліни

«Основи об'єктно-орієнтованого програмування»

Виконав: студент групи

Варіант: №12

Перевірив: Нагорний В.В.

2021

1.Постановка задачі.

Варіант 12
Розробити клас MyString, який буде представляти рядок. У класі зберігається ЛИШЕ покажчик на рядок. Пам’ятайте, що ознакою кінця рядка в стандарті мови С++ вважається символ ’\0’.

В класі обов’язково повинні бути такі методи.

  1. Конструктор за замовчуванням – створює об’єкт – пустий рядок.

  2. Конструктор, що приймає у якості параметру значення n – створює рядок довжиною n символів.

  3. Метод, що визначає довжину рядка.

  4. Для парних варінатів - Метод, що перевизначає операцію « + » – створює новий рядок, що є об’єднанням двох об’єктів-рядків.
    Наприклад, маємо два об’єкти, що містять «Прик» та «лад» відповідно. В результаті роботи методу має створитися новий рядок зі змістом «Приклад».

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.Контрольний приклад


скачати

© Усі права захищені
написати до нас