From 3ba0c94f9ef91d6320eb1091688882ae85cbad62 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Tue, 22 Feb 2022 22:00:13 +0200 Subject: Added today's oop practice --- .../01-Practice-22.02.2022.cpp | 131 +++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 Year 1/Object-oriented Programming/01-Practice-22.02.2022.cpp (limited to 'Year 1/Object-oriented Programming') diff --git a/Year 1/Object-oriented Programming/01-Practice-22.02.2022.cpp b/Year 1/Object-oriented Programming/01-Practice-22.02.2022.cpp new file mode 100644 index 0000000..e037f37 --- /dev/null +++ b/Year 1/Object-oriented Programming/01-Practice-22.02.2022.cpp @@ -0,0 +1,131 @@ +#include + +// Source: https://github.com/triffon/oop-2021-22/blob/main/practicum/6/week1/%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B8.%20%D0%94%D0%B5%D0%BA%D0%B0%D0%BB%D1%80%D0%B0%D1%86%D0%B8%D1%8F%20%D0%B8%20%D0%B8%D0%B7%D0%BF%D0%BE%D0%BB%D0%B7%D0%B2%D0%B0%D0%BD%D0%B5%20%D0%BD%D0%B0%20%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B8..pdf + +// Ex 1 + +struct comp { // a + b * i + double a; + double b; +}; + +comp sum(comp x, comp y) { + return { x.a + y.a, x.b + y.b }; +} + +void printComp(comp x) { + std::cout << x.a << " + " << x.b << " * i"; +} + +void ex1() { + comp first = { 3, 5 }; + comp second = { 7, 25 }; + printComp(sum(first, second)); +} + +// Ex 2 + +struct Student { + int fn; + int course; + int grade; +}; + +Student initStudent(int fn, int course, int grade) { + return { fn, course, grade }; +} + +void printStudent(const Student& st) { + std::cout << "FN: " << st.fn << ";COURSE: " << st.course << ";GRADE: " << st.grade << std::endl; +} + +void ex2() { + Student gosho = initStudent(12345, 1, 7); + printStudent(gosho); +} + +// Ex 3 + +struct StudentList { + Student * students; + int size; +}; + +struct Group { + StudentList students; + int avgGrade; +}; + +Group cinGroup() { + int n; + std::cin >> n; + Student* students = new Student[n]; + + int gradeSum = 0; + for (int i = 0; i < n; i++) { + std::cin >> students[i].fn >> students[i].course >> students[i].grade; + gradeSum += students[i].grade; + } + return { { students, n }, gradeSum / n }; +} + +int countScolarship(const Group& gr, int minGrade) { + int count = 0; + for (int i = 0; i < gr.students.size; i++) + if (gr.students.students[i].grade >= minGrade) count++; + return count; +} + +void ex3() { + Group ourGroup = cinGroup(); + + int minGrade; + std::cin >> minGrade; + std::cout << countScolarship(ourGroup, minGrade) << std::endl; + + delete[] ourGroup.students.students; +} + +// Ex 4 + +void orderByGrades(const StudentList& sl) { + for (int i = 0, minInd = i; i < sl.size; i++, minInd = i) { + for (int j = i; j < sl.size; j++) { + if (sl.students[j].grade > sl.students[minInd].grade) + minInd = j; + } + + Student temp = sl.students[i]; + sl.students[i] = sl.students[minInd]; + sl.students[minInd] = temp; + } +} + +StudentList scolarshipStudents(const Group& gr, int scolarshipGrade) { + StudentList res = { new Student[gr.students.size], gr.students.size }; + int ind = 0; + for (int i = 0; i < gr.students.size; i++) + if (gr.students.students[i].grade >= scolarshipGrade) + res.students[ind++] = gr.students.students[i]; + res.size = ind; + return res; +} + +void ex4() { + Group ourGroup = cinGroup(); + int scolarshipGrade; + std::cin >> scolarshipGrade; + + StudentList withScolarship = scolarshipStudents(ourGroup, scolarshipGrade); + orderByGrades(withScolarship); + + for (int i = 0; i < withScolarship.size; i++) + printStudent(withScolarship.students[i]); + + delete[] ourGroup.students.students; + delete[] withScolarship.students; +} + +int main() { + ex4(); +} \ No newline at end of file -- cgit v1.3.1-23-gd82d