Skip to content
This repository has been archived by the owner on Jul 13, 2021. It is now read-only.

Latest commit

 

History

History
39 lines (24 loc) · 2.98 KB

README.md

File metadata and controls

39 lines (24 loc) · 2.98 KB

CppSource

Repo for third homework on 2019/2020 C++ course

Task 1

Вынести объявление класса User в отдельный заголовочный файл; его определение - в отдельный файл исходного кода. Убедиться, что существующий функционал не помер.

Task 2

Вам требуется реализовать функцию конкатенации (склейки) двух C-style строк. Функция конкатенации принимает на вход две C-style строки и дописывает вторую в конец первой так, чтобы первая строка представляла из себя одну C-style строку равную конкатенации двух исходных. Не забудьте, что в результирующей строке должен быть только один нулевой символ — тот, что является маркером конца строки. Гарантируется, что в первой строке достаточно памяти (т.е. она располагается в массиве достаточной длины), чтобы разместить конкатенацию обеих строк, но не больше.

void strcat(char* to, const char* from)
{
	……
}

Task 3

Нужно реализовать функцию resize. Функция resize принимает на вход три аргумента: указатель на область памяти, выделенную с помощью оператора new[], размер области (size) и новый размер (new_size). Функция должна выделить память размера new_size, скопировать в нее данные из переданной области памяти, освободить старую область памяти и вернуть выделенную область памяти нового размера со скопированными данными.   Обратите внимание, что память, возвращенная из функции, будет освобождена с помощью оператора delete[]. Несмотря на то, что входной тип данных — это сhar* , не стоит рассчитывать, что там хранится C-style строка. При выполнении задания также учтите, что new_size может быть меньше size - тогда возвращайте нулевой указатель.

char* resize(char* str, unsigned size, unsigned new_size) 
{ 
	… 
}

Task 4

Отметьте максимальное количество методов класса User модификатором const, не потеряв логики работы класса.