diff options
sem 9/10
9 files changed, 114 insertions, 0 deletions
| -rw-r--r-- | Sem. 09/task1 (not finished)/Grade.cpp (renamed from Sem. 09/task (not finished)/Grade.cpp) | 0 | ||||
| -rw-r--r-- | Sem. 09/task1 (not finished)/Grade.h (renamed from Sem. 09/task (not finished)/Grade.h) | 0 | ||||
| -rw-r--r-- | Sem. 09/task1 (not finished)/Student.cpp (renamed from Sem. 09/task (not finished)/Student.cpp) | 0 | ||||
| -rw-r--r-- | Sem. 09/task1 (not finished)/Student.h (renamed from Sem. 09/task (not finished)/Student.h) | 0 | ||||
| -rw-r--r-- | Sem. 09/task1 (not finished)/UniCourse.cpp (renamed from Sem. 09/task (not finished)/UniCourse.cpp) | 0 | ||||
| -rw-r--r-- | Sem. 09/task1 (not finished)/UniCourse.h (renamed from Sem. 09/task (not finished)/UniCourse.h) | 0 | ||||
| -rw-r--r-- | Sem. 09/task1 (not finished)/main.cpp (renamed from Sem. 09/task (not finished)/main.cpp) | 0 | ||||
| -rw-r--r-- | Sem. 09/task2/Queue.hpp | 91 | ||||
| -rw-r--r-- | Sem. 09/task2/main.cpp | 23 |
diff --git a/Sem. 09/task (not finished)/Grade.cpp b/Sem. 09/task1 (not finished)/Grade.cpp index 4302166..4302166 100644 --- a/Sem. 09/task (not finished)/Grade.cpp +++ b/Sem. 09/task1 (not finished)/Grade.cpp diff --git a/Sem. 09/task (not finished)/Grade.h b/Sem. 09/task1 (not finished)/Grade.h index d0cb2e7..d0cb2e7 100644 --- a/Sem. 09/task (not finished)/Grade.h +++ b/Sem. 09/task1 (not finished)/Grade.h diff --git a/Sem. 09/task (not finished)/Student.cpp b/Sem. 09/task1 (not finished)/Student.cpp index 99d26dc..99d26dc 100644 --- a/Sem. 09/task (not finished)/Student.cpp +++ b/Sem. 09/task1 (not finished)/Student.cpp diff --git a/Sem. 09/task (not finished)/Student.h b/Sem. 09/task1 (not finished)/Student.h index 5c09792..5c09792 100644 --- a/Sem. 09/task (not finished)/Student.h +++ b/Sem. 09/task1 (not finished)/Student.h diff --git a/Sem. 09/task (not finished)/UniCourse.cpp b/Sem. 09/task1 (not finished)/UniCourse.cpp index c854b82..c854b82 100644 --- a/Sem. 09/task (not finished)/UniCourse.cpp +++ b/Sem. 09/task1 (not finished)/UniCourse.cpp diff --git a/Sem. 09/task (not finished)/UniCourse.h b/Sem. 09/task1 (not finished)/UniCourse.h index fde1518..fde1518 100644 --- a/Sem. 09/task (not finished)/UniCourse.h +++ b/Sem. 09/task1 (not finished)/UniCourse.h diff --git a/Sem. 09/task (not finished)/main.cpp b/Sem. 09/task1 (not finished)/main.cpp index 6b727fa..6b727fa 100644 --- a/Sem. 09/task (not finished)/main.cpp +++ b/Sem. 09/task1 (not finished)/main.cpp diff --git a/Sem. 09/task2/Queue.hpp b/Sem. 09/task2/Queue.hpp new file mode 100644 index 0000000..1cc14c3 --- /dev/null +++ b/Sem. 09/task2/Queue.hpp @@ -0,0 +1,91 @@ +#include <iostream> + +template <typename T> +class Queue +{ + T* data; + size_t capacity; + size_t count; + + size_t head; //where to get + size_t tail; //last added element; + + void resize(size_t newCapacity); +public: + Queue(); + + void enqueue(const T& obj); + T dequeue(); + + size_t getCount(); + size_t isEmpty(); +}; + +template <typename T> +Queue<T>::Queue() +{ + capacity = 4; + data = new T[capacity]; + + count = 0; + head = tail = 0; +} + + + +template <typename T> +void Queue<T>::enqueue(const T& obj) +{ + if (count == capacity) + resize(capacity * 2); + if (count != 0) + tail++; + + tail %= capacity; //so we don't get an out of range exception + + data[tail] = obj; + + count++; +} + +template <typename T> +T Queue<T>::dequeue() +{ + if (count == 0) + throw std::exception("The collection is empty!"); + + T toReturn = data[head]; + (++head) %= capacity; + + count--; + + return toReturn; +} + +template <typename T> +size_t Queue<T>::getCount() +{ + return count; +} + +template <typename T> +size_t Queue<T>::isEmpty() +{ + return getCount() == 0; +} + +template <typename T> +void Queue<T>::resize(size_t newCapacity) +{ + T* newData = new T[newCapacity]; + + for (int i = 0, ind = head; i < count; i++, (++ind) %= capacity) + newData[i] = data[ind]; + + delete[] data; + capacity = newCapacity; + data = newData; + + head = 0; + tail = count - 1; +}
\ No newline at end of file diff --git a/Sem. 09/task2/main.cpp b/Sem. 09/task2/main.cpp new file mode 100644 index 0000000..e52579a --- /dev/null +++ b/Sem. 09/task2/main.cpp @@ -0,0 +1,23 @@ +#include <iostream> +#include "Queue.hpp" +using namespace std; + + + +int main() +{ + Queue<char> q; + + q.enqueue('A'); + q.enqueue('B'); + q.enqueue('C'); + q.enqueue('D'); + cout << q.dequeue() << endl; + q.enqueue('E'); + q.enqueue('F'); + cout << q.dequeue() << endl; + cout << q.dequeue() << endl; + cout << q.dequeue() << endl; + cout << q.dequeue() << endl; + cout << q.dequeue() << endl; +}
\ No newline at end of file |
