diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 96512c1..9c6c366 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -10,21 +10,8 @@ - - - - - - - - - - - - - - + diff --git a/_pruefung/classes.cpp b/_pruefung/classes.cpp new file mode 100644 index 0000000..010c104 --- /dev/null +++ b/_pruefung/classes.cpp @@ -0,0 +1,97 @@ +#include "iostream" +#include "string" +#include "vector" +#include + +class University; +class UniMember { +public: + University* uni; + std::string name; + int id; + + UniMember(University* university, std::string name, int id) { + this->uni = university; + this->name = name; + this->id = id; + } +}; + +class UniWorker: public UniMember { +public: + UniWorker(University* university, std::string name, int id) + : UniMember(university, name, id) {} + +}; + +class UniStudent: public UniMember { +public: + UniStudent(University* university, std::string name, int id) + : UniMember(university, name, id) {} + + void evaluate_exam(double grade){ + grades.push_back(grade); + } + + double calc_avg(){ + if(grades.empty()) return 0; + auto const count = static_cast(grades.size()); + return std::reduce(grades.begin(), grades.end()) / count; + } + +private: + std::vector grades; +}; + +class University { +public: + std::string name; + UniWorker* dean; + + University(std::string name) { + this->name = name; + } + + UniWorker* create_worker(std::string mem_name) { + int id = members.size() + 1; + UniWorker* worker = new UniWorker(this, mem_name, id); + members.push_back(worker); + return worker; + } + + UniStudent* create_student(std::string mem_name) { + int id = members.size() + 1; + UniStudent* student = new UniStudent(this, mem_name, id); + members.push_back(student); + return student; + } + + void elect_dean(UniWorker* worker) { + dean = worker; + } + + int count_members() { + return members.size(); + } +private: + std::vector members; +}; + + +int main() { + University* trier = new University("Trier"); + UniWorker* dean = trier->create_worker("Eva Eckkrammer"); + trier->elect_dean(dean); + UniStudent* student = trier->create_student("Jan-Niclas Loosen"); + student->evaluate_exam(1.3); + student->evaluate_exam(2.3); + student->evaluate_exam(1.3); + student->evaluate_exam(3.3); + + std::cout << "Die Universitaet " << trier->name << " hat " << trier->count_members() << " Mitglieder." << std::endl; + std::cout << "Die Dekanin der Universitaet " << trier->name << " heisst " << trier->dean->name << "." << std::endl; + std::cout << student->name << " hat einen Notenschnitt von " << student->calc_avg() << "." << std::endl; +} + + + diff --git a/_pruefung/classes.exe b/_pruefung/classes.exe new file mode 100644 index 0000000..7680678 Binary files /dev/null and b/_pruefung/classes.exe differ diff --git a/_pruefung/empty.txt b/_pruefung/empty.txt deleted file mode 100644 index 26eb25c..0000000 --- a/_pruefung/empty.txt +++ /dev/null @@ -1 +0,0 @@ -Ad astra per aspera. \ No newline at end of file diff --git a/_pruefung/plan.txt b/_pruefung/plan.txt new file mode 100644 index 0000000..83b4a9e --- /dev/null +++ b/_pruefung/plan.txt @@ -0,0 +1,2 @@ +1. Begriffe durchgehen +2. Nochmal C++ mit Pointern und so abchecken (Arrays vs. Vectors insbesondere) \ No newline at end of file