Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 08 / README.md
diff options
context:
space:
mode:
Commit8cf1283a4ffb9fe1901c29c087fa376de82726af (patch)
Author
 angeld55 <angel_dimitriev@abv.bg>
2022-02-19 23:30:52 +0200
Committer
 angeld55 <angel_dimitriev@abv.bg>
2022-02-19 23:30:52 +0200
Filesabdfe6bf526100dcce87a88563100e02adf7605e /Sem. 08/README.md
Object-oriented_programming_FMI-8cf1283a4ffb9fe1901c29c087fa376de82726af.tar
Object-oriented_programming_FMI-8cf1283a4ffb9fe1901c29c087fa376de82726af.tar.gz
Object-oriented_programming_FMI-8cf1283a4ffb9fe1901c29c087fa376de82726af.zip
Parentd73a7ec225516657dec74472a0491330e9999217 (diff)
clean up
1 files changed, 0 insertions, 161 deletions
-rw-r--r--Sem. 08/README.md161
diff --git a/Sem. 08/README.md b/Sem. 08/README.md
deleted file mode 100644
index 41e40f4..0000000
--- a/Sem. 08/README.md
+++ /dev/null
@@ -1,161 +0,0 @@
-# Предефиниране на оператори. Приятелски класове и функции.
-## Oператори
-### Видове оператори.
-в C++ има два вида оператори:
-
- - Унарни (на един аргумент)
- - Бинарни (на два аргумента)
-
-
-### Операторите се характеризират с:
- - Приоритет
- - Асоциативност
- - Позиция на оператора спярмо аргумента - *префиксен*, *инфиксен* и *суфиксен*
-
-### Списъка на операторите в C++:
-| Оператор | Асоциативност |
-|------------------------------------------------|---------------------------------|
-| () [] -> . ++ - - | лявоасоциативен |
-| + - ! ~ ++ - - (type)* & sizeof | дясноасоциативен |
-| * / % | лявоасоциативен |
-| + - | лявоасоциативен|
-| << >> | лявоасоциативен|
-| < <= > >= | лявоасоциативен|
-| == != | лявоасоциативен|
-| & | лявоасоциативен |
-| ^ | лявоасоциативен |
-| \| | лявоасоциативен|
-| && | лявоасоциативен|
-| \|\| | лявоасоциативен|
-| ?: | дясноасоциативен |
-| = += -= *= /= %= >>= <<= &= ^= | дясноасоциативен |
-
-### Предефиниране на оператор (пример)
-```c++
-Complex& Complex::operator+=(const Complex& other)
-{
- real += other.real;
- im += other.im;
- return *this;
-}
- ```
-Вече може да правим следното:
-```c++
-ina main()
-{
- Complex c(1,3); //1 + 3i;
- Complex c2(10,20) // 10 + 2i;
- c += c2 // now c is 11 + 5i
-}
- ```
-При предефинирането на оператор **не могат** да се променят *приоритетът*, *асоциативността*, броят и позицията на *аргументите* му.
-
-## Приятелски класове и приятелски функции
-Декларират се с на запазената дума **friend** пред прототипа на функцията.
-Даденият friend-клас/фунцкия има достъп до всички компоненти на класа.
-Т.е. всички членове на класа са public за friend-класовете/функциите приятели.
-### Приятелски функции (пример)
-
- ```c++
-class Complex
-{
-
-private:
- double real;
- double im;
-public:
- friend double getModulos(const Complex& other);
- .
- .
- .
-}
- ```
- ```c++
-
-double getModulos(const Complex& other)
-{
- return sqrt((other.real – other.real) * (other.real – other.real) + (other.im – other.im ) * (other.im – other.im));
-}
-
-```
-## Задачи
-
-**Задача 1:**
-Реализирайте клас **Nvector**, който ще се използва за работа с математически вектор.
-Предефинирайте оператори със следната функционалност:
- - Събиране на вектори.
- - Изваждане на вектори.
- - Умножение на вектор със скалар.
- - Проверка дали два вектора са успоредни.
- - Проверка дали два вектора са перпендикулярни.
- - Взимане на дължина на вектор.
- - Достъп до произволен елемент на вектор.
- - Вход и изход от потоци.
-
- ```c++
-int main()
-{
- Nvector v(4);
- cin >> v;
-
- Nvector v2(4);
- cin >> v;
-
- Nvector result = v + v2;
-
- cout << result << endl;
-
-}
- ```
- Релизирайте клас двумерната декартова координатна система, която приема 2 вектора, които са нейният базис.
- Реализрайте следните функции:
- - Връща вектор в базиса по подадени 2 координата.
- - По подаден вектор връща координатите му в базиса.
-
- ```c++
-int main()
-{
- Nvector v(4);
- v[0] = 2;
- v[1] = 1;
-
- Nvector v2(4);
- v2[0] = 3;
- v2[1] = 1;
-
- twoDimCoordSystem s(v1, v2);
-
- cout << s1.getVectorByCoordinates(7, 4); // [26, 11]
-
- cout << s1.getCoordinatesByVector(7, 4); // [5, -1]
-
- cout << result << endl;
-
-}
- ```
-
- **Задача 2:**
-Реализирайте клас **Complex**, който ще се използва за работа с комплексни числа.
-Предефинирайте оператори със следната функционалност:
- - Събиране на комплексни числа.
- - Изваждане на комплексни числа.
- - Умножение на комплексни числа.
- - Деление на комплексни числа
- - Вход и изход от потоци.
-
-```c++
-
-
-int main()
-{
- Complex c;
- cin >> c;
-
- Complex c2;
- cin >> c2;
-
- Complex result = c2 / c;
-
- cout << result << endl;
-}
- ```