Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab 2 Zhovtyak

.docx
Скачиваний:
0
Добавлен:
27.08.2024
Размер:
35.36 Кб
Скачать

ГУАП

КАФЕДРА № 41

ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

Старший преподаватель

Д.В. Куртяник

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ

ВЛОЖЕННЫЕ КЛАССЫ. КОНСТРУКТОРЫ. ПЕРЕГРУЗКА.

по курсу: ОСНОВЫ ПРОГРАММИРОВАНИЯ

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №

4016

06.04.2021

М.О.Жовтяк

подпись, дата

инициалы, фамилия

Санкт-Петербург 2021

Вариант 17

Задача. Создать класс для работы с 64-битовыми строками. Битовая строка должна быть представлена двумя полями типа unsigned long. Реализовать операции для работы с битами:

  1. and;

  2. сдвиг влево на заданное количество битов.

Алгоритм работы программы: В string классе создаем конструкторы, которые принимают значения строк из функции main. Далее эти значения «по дружбе» доверяются классу base. В нем, переданные значения проходят, через реализованные мной операции. После этого эти значения показываются на консоли отладки.

Код программы:

Основной файл ConsoleApplication3.cpp:

#include <iostream>

#include "string.cpp"

int main()

{

base stroka(4, 7, 2);

stroka.left_shift();

stroka.concat();

base stroks;

stroks.left_shift();

stroks.concat();

}

Файл с классами string.cpp:

#include <iostream>

class string

{

public:

unsigned long bit1, bit2;

int number;

string()

{

std::cout << "Enter the first bit string: " << std::endl;

std::cin >> bit1;

std::cout << "Enter the second bit string: " << std::endl;

std::cin >> bit2;

std::cout << "How much to move the string to the left? " << std::endl;

std::cin >> number;

};

string(unsigned long a, unsigned long b, int c)

{

bit1 = a;

bit2 = b;

number = c;

};

friend std::ostream& operator << (std::ostream& out, const string& string);

friend std::istream& operator >> (std::istream& in, string& string);

};

class base

{

private:

string work;

public:

base(unsigned long a, unsigned long b, int c) : work(a, b, c) {};

friend std::ostream& operator << (std::ostream& out, const base& string);

base() {}

void left_shift()

{

unsigned long m = work.bit1 << work.number;

unsigned long n = work.bit2 << work.number;

std::cout << " Left shift of the first string: " << m << std::endl;

std::cout << " Left shift of the second string: " << n << std::endl;

}

void concat()

{

unsigned long m = work.bit1 & work.bit2;

std::cout << " Concatenation of the strings: " << m << std::endl;

}

string operator &(string bit)

{

base biti;

bit.bit1 = bit.bit1 & bit.bit2;

return bit;

}

string operator << (string bit)

{

base biti;

bit.bit1 = bit.bit1 << bit.number;

return bit;

}

};

std::ostream& operator<<(std::ostream& out, const base& string)

{

return out;

}

std::istream& operator>> (std::istream& in, string& string)

{

in >> string.bit1;

in >> string.bit2;

in >> string.number;

return in;

};

Результат работы:

Вывод: Я научился работать с классами, перегрузками, вкладывать один класс в другой, реализовывать методы вне класса, разбивать код на несколько файлов.

Соседние файлы в предмете Основы программирования