Задачи - ООП, Седмица 6, 28.03.2024
GitHub classroom: classroom.github.com/a/rzSTn5pu
В задачите за файлове имплементирайте всички нужни проверки и затваряния
Преговорни
#1 задача - Копиращ конструктор и оператор=
#Имплементирайте структура WoodenPlank
, която скрито запазва ширина, дължина и височина на дъската (целочислено), цената ѝ (число с плаваща запетая) и типа дърво (низ с максимум 1024 знака).
Имплементирайте get-ъри, set-ъри, копиращ конструктор, оператор=
2 задача - Голяма четворка
#Имплементирайте структура DynamicString
, която скрито запазва указател към низ (в динамичната памет) и неговия размер.
Имплементирайте голяма четворка.
Лесни задачи
#3 задача
#Имплементирайте програма, която отваря файл (създава го, ако вече не е създаден) и вкарва текста “Hello World!” във файла. Името на файла се подава от стандартния вход на един ред.
4 задача
#Имплементирайте програма, която приема име на файл от стандартния вход. Изкарайте последния ред от файла.
Редовете са разделени със знака \n
.
5 задача
#Имплементирайте програма, която приема име на файл от стандартния вход. Изкарайте броя редове и броя думи във файла.
6 задача
#От стандартния вход получавате, на два отделни реда, две имена на файлове. Вмъкнете съдържанието на втория файл по средата на първия файл.
7 задача
#От стандартния вход получавате числата m и n, както и името на файл (на свой си ред). Изкарайте на екрана от m-тата до n-тата буква (включително) от всеки ред във файла. Първата буква на един ред е на индекс 1.
8 задача
#Имплементирайте структура FileBuffer
, която в конструктора си приема име на файл, отваря го и запазва (копира) цялото му съдържание в динамичната памет (с указател член-данна).
Кога трябва да затворим файла?
Имплементирайте голяма четворка.
9 задача
#Имплементирайте структура Person
, която приема име на човек (низ с максимална дължина от 1024 знака) и неговата възраст (целочислена стойност).
Имплементирайте методи Save
и Load
, които съответно запазват/прочитат данните в (двоичен) файл с подадено име.
Трудни задачи
#10 задача
#Имплементирайте структура Table
, която запазва произволен брой колони и редове с низови стойности.
Броя редове/колони може да се уразмерява по време на изпълнение.
Имплементирайте голяма четворка.
Имплементирайте методи AddRow
и AddColumn
, които вмъкват подадените стойности като нов ред/колона на дадения индекс.
Аналогично имплементирайте методи RemoveRow
и RemoveColumn
.
Чрез всички тези имплементирайте метода ModifyValue
, който променя стойността на клетката на дадените индекси.
Имплементирайте методи Save
и Load
, които запазват/зреждат таблицата в/от файл с подадено име, в текстовия CSV формат (всеки ред в таблицата е ред във файла, всички стойности в реда от таблицата са разделени със запетая в реда във файла).
11 задача
#Имплементирайте структура City
, която запазва името на даден град (низ с максимална дължина от 1024 знака) и масив от указатели към други градове, които са негови съседи.
Имплементирайте методи AddNeighbour
и RemoveNeighbour
(броя съседи може да се променя), както и голяма четворка.
Имплементирайте методи Save
и Load
, които запазват/зреждат всичките достижими градове от сегашния в/от (бинарен) файл с подадено име.
Подсказвам, че не можете да запазите указателите ей-така.