Website Summary Files Commits Branches @commit @diff @stats
path: root / week06
NameSize
..
Exercise01.cpp1.0 KiBlog stats plain blame
Exercise02.cpp555 Blog stats plain blame
Exercise03.cpp275 Blog stats plain blame
Exercise04.cpp1.4 KiBlog stats plain blame
Exercise05.cpp595 Blog stats plain blame
Exercise06.cpp912 Blog stats plain blame
Exercise07.cpp598 Blog stats plain blame
Exercise08.cpp857 Blog stats plain blame
Exercise09.cpp1.0 KiBlog stats plain blame
README.md5.8 KiBlog stats plain blame

Задачи - ООП, Седмица 6, 28.03.2024

Този файл е копие на задачите от: syndamia.com/teaching/oop-2023/week6

&:warn В задачите за файлове имплементирайте всички нужни проверки и затваряния

Преговорни

1 задача - Копиращ конструктор и оператор=

Имплементирайте структура WoodenPlank, която скрито запазва ширина, дължина и височина на дъската (целочислено), цената ѝ (число с плаваща запетая) и типа дърво (низ с максимум 1024 знака).

Имплементирайте get-ъри, set-ъри, копиращ конструктор, оператор=

2 задача - Голяма четворка

Имплементирайте структура DynamicString, която скрито запазва указател към низ (в динамичната памет) и неговия размер.

Имплементирайте голяма четворка.

Лесни задачи

3 задача

Имплементирайте програма, която отваря файл (създава го, ако вече не е създаден) и вкарва текста "Hello World!" във файла. Името на файла се подава от стандартния вход на един ред.

4 задача

Имплементирайте програма, която приема име на файл от стандартния вход. Изкарайте последния ред от файла.

Редовете са разделени със знака \n.

5 задача

Имплементирайте програма, която приема име на файл от стандартния вход. Изкарайте броя редове и броя думи във файла.

6 задача

От стандартния вход получавате, на два отделни реда, две имена на файлове. Вмъкнете съдържанието на втория файл по средата на първия файл.

7 задача

От стандартния вход получавате числата m и n, както и името на файл (на свой си ред). Изкарайте на екрана от m-тата до n-тата буква (включително) от всеки ред във файла. Първата буква на един ред е на индекс 1.

8 задача

Имплементирайте структура FileBuffer, която в конструктора си приема име на файл, отваря го и запазва (копира) цялото му съдържание в динамичната памет (с указател член-данна).

&:question Кога трябва да затворим файла?

Имплементирайте голяма четворка.

9 задача

Имплементирайте структура Person, която приема име на човек (низ с максимална дължина от 1024 знака) и неговата възраст (целочислена стойност). Имплементирайте методи Save и Load, които съответно запазват/прочитат данните в (двоичен) файл с подадено име.

Трудни задачи

10 задача

Имплементирайте структура Table, която запазва произволен брой колони и редове с низови стойности. Броя редове/колони може да се уразмерява по време на изпълнение. Имплементирайте голяма четворка.

Имплементирайте методи AddRow и AddColumn, които вмъкват подадените стойности като нов ред/колона на дадения индекс. Аналогично имплементирайте методи RemoveRow и RemoveColumn. Чрез всички тези имплементирайте метода ModifyValue, който променя стойността на клетката на дадените индекси.

Имплементирайте методи Save и Load, които запазват/зреждат таблицата в/от файл с подадено име, в текстовия CSV формат (всеки ред в таблицата е ред във файла, всички стойности в реда от таблицата са разделени със запетая в реда във файла).

11 задача

Имплементирайте структура City, която запазва името на даден град (низ с максимална дължина от 1024 знака) и масив от указатели към други градове, които са негови съседи. Имплементирайте методи AddNeighbour и RemoveNeighbour (броя съседи може да се променя), както и голяма четворка.

Имплементирайте методи Save и Load, които запазват/зреждат всичките достижими градове от сегашния в/от (бинарен) файл с подадено име. Подсказвам, че не можете да запазите указателите ей-така.