Website Summary Files Commits Branches @commit @diff @stats
path: root / week07
NameSize
..
Exercise1.cpp1.7 KiBlog stats plain blame
Exercise1.h464 Blog stats plain blame
Exercise2.cpp461 Blog stats plain blame
Exercise3.cpp1.8 KiBlog stats plain blame
Exercise3.h376 Blog stats plain blame
Exercise4.cpp2.5 KiBlog stats plain blame
Exercise4.h473 Blog stats plain blame
Exercise5.cpp4.3 KiBlog stats plain blame
Exercise5.h668 Blog stats plain blame
Exercise6.cpp1.8 KiBlog stats plain blame
Exercise6.h678 Blog stats plain blame
README.md6.1 KiBlog stats plain blame

Задачи - ООП, Седмица 7, 04.04.2024

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

Преговорни

Задача 1 - Голяма петица

Една съставка е композирана от низ (с максимална дължина от 511 знака) определящ името ѝ и грамаж (число с плаваща запетая).

Създайте клас Recipe, към който могат да се прибавят и премахват произволен брой съставки. Имплементирайте голяма петица (голяма четворка плюс move семантики) за него.

Задача 2 - Работа с файлове

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

Лесни задачи

Задача 3

Имплементирайте клас Thermometer, който запазва максималната и минималната възможна температура за измерване, както и сегашната температура, всичките които са цели неотрицателни числа.

Имплементирайте методи SaveText и LoadText, които съответно записват и четат (тоест член-данните стават равни на тези от файла) данните си в/от текстови файл с подадено име. Аналогично имплементирайте SaveBinary и LoadBinary, които работят с двоични файлове.

Задача 4

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

Имплементирайте методите SaveText, LoadText, SaveBinary, LoadBinary.

Задача 5

За един транспортен билет е нужно скрито да пазим началната и крайната дестинация като динамично-заделени низове с произволна дължина, неговата цена като число с плаваща запетая и идентификационен номер като цяло неотрицателно число.

Имплементирайте голяма петица и четирите функции за запазване и четене от файлове на съответния клас.

Задача 6

Имплементирайте клас Matrix, който запазва стойностите на матрица 2 на 2. Предефинирайте операторите за инкрементиране, декрементиране, събиране, изваждане, умножение и вход/изход от/към поток.

Имплементирайте четирите функции за записване и четене от файлове.

Задача 7

Имплементирайте клас Paragraph, който съдържа текст с много редове в него. Текстът се запазва като низ с произволна дължина, а редовете се разделят със знака '\n'.

Имплементирайте голяма петица. Имплементирайте четирите функции за записване и четене от файлове.

Имплементирайте операторите за събиране, които копират текстът от подадения параграф и го вмъкват в края на сегашния; оператор[] който връща начален указател на i-тия ред; операторите за (лексикографско) сравнение; вход/изход от/към поток.

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

Задача 8

Имплементирайте клас MatrixNМ, който запазва стойностите на матрица с N реда и M колони (подадени на конструктор).

Имплементирайте голяма петица. Имплементирайте четирите функции за записване и четене от файлове.

Имплементирайте операторите за събиране, изваждане, умножение и деление (нека да дефинираме деление на две матрици като умножението на първата матрица по транспонираната втората матрица върху детерминантата ѝ). Ако някоя операция не е възможна, върнете съответна стойност по подразбиране.

Имплементирайте оператор[], като индекса i е числена конкатенация на двете координати, разделени с нула (тоест ако искаме стойността на ред 27 и колона 9, тогава ще въведем индекса 2709). Имплементирайте оператори за равенство, инкрементиране, декрементиране, побитово отместване (прилага се върху всяка стойност в матрицата), логически (&& връща true само ако двете матрици са равни, || връща true ако имат еднакви размерности и съществува поне един равен елемент на еднакви индекси).