Website Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commit00b22d8682827a6e8d0098437559537a04236aa4 (patch)
Author
 angeld55 <angel_dimitriev@abv.bg>
2021-04-26 01:11:36 +0300
Committer
 angeld55 <angel_dimitriev@abv.bg>
2021-04-26 01:11:36 +0300
Filesbbb283de3d85882b257bb2bb2acb39e18dc991b8
Object-oriented_programming_FMI-00b22d8682827a6e8d0098437559537a04236aa4.tar
Object-oriented_programming_FMI-00b22d8682827a6e8d0098437559537a04236aa4.tar.gz
Object-oriented_programming_FMI-00b22d8682827a6e8d0098437559537a04236aa4.zip
Parent7ae68dd627bdb2681dc8ddf7c35e415fad8ea814 (diff)
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.hpp91
-rw-r--r--Sem. 09/task2/main.cpp23
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