Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 04
diff options
context:
space:
mode:
Commitbd9ffde20d67674041712a6686340b0c619b791b (patch)
Author
 Your Name <you@example.com>
2021-05-15 12:31:51 +0300
Committer
 Your Name <you@example.com>
2021-05-15 12:31:51 +0300
Files044fb2a1d4cf32c970886c2243fc2155eae10078 /Sem. 04
Object-oriented_programming_FMI-bd9ffde20d67674041712a6686340b0c619b791b.tar
Object-oriented_programming_FMI-bd9ffde20d67674041712a6686340b0c619b791b.tar.gz
Object-oriented_programming_FMI-bd9ffde20d67674041712a6686340b0c619b791b.zip
Parenta76f4ac4ee38c4d64f54fa75f7e20b361e2b4102 (diff)
minor fixes
1 files changed, 0 insertions, 156 deletions
-rw-r--r--Sem. 04/uni_task(not finished).cpp156
diff --git a/Sem. 04/uni_task(not finished).cpp b/Sem. 04/uni_task(not finished).cpp
deleted file mode 100644
index 7bf3a70..0000000
--- a/Sem. 04/uni_task(not finished).cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-#include <iostream>
-#include <fstream>
-
-using namespace std;
-
-
-struct Student
-{
- char* name;
- int fn;
- int gradesCount;
- double averageGrade;
-};
-void print(const Student& st)
-{
- cout << st.name << " " << st.fn << " " << st.gradesCount << " " << st.averageGrade << endl;
-}
-Student createStudent(const char* name, int fn, int gradesCount, double avGrade)
-{
- Student obj;
-
- size_t nameLen = strlen(name);
-
- obj.name = new char[nameLen + 1];
- strcpy(obj.name, name);
-
- obj.fn = fn;
- obj.gradesCount = gradesCount;
- obj.averageGrade = avGrade;
-
- return obj;
-}
-void saveStudentToFile(ofstream& f, const Student& st)
-{
- size_t nameLen = strlen(st.name);
- f.write((const char*)&nameLen, sizeof(nameLen)); //first we write the size of the name!
- f.write(st.name, nameLen);
- f.write((const char*)&st.fn, sizeof(st.fn));
- f.write((const char*)&st.gradesCount, sizeof(st.gradesCount));
- f.write((const char*)&st.averageGrade, sizeof(st.averageGrade));
-
-}
-Student readStudentFromFile(ifstream& f)
-{
- Student res;
-
- size_t nameLen;
-
- f.read((char *)&nameLen, sizeof(nameLen)); //first we read the size of the name!
-
- res.name = new char[nameLen + 1];
- f.read(res.name, nameLen);
- res.name[nameLen] = '\0';
-
- f.read((char *)&res.fn, sizeof(res.fn));
- f.read((char*)&res.gradesCount, sizeof(res.gradesCount));
- f.read((char*)&res.averageGrade, sizeof(res.averageGrade));
-
- return res;
-}
-void freeStudent(Student& s)
-{
- delete[] s.name;
-
- s.averageGrade = s.fn = s.gradesCount = 0;
-
-}
-
-const int UNI_NAME_MAX = 32;
-struct Uni
-{
- char name[UNI_NAME_MAX];
- size_t studentsCount;
- Student* students;
-};
-
-void saveUniToFile(ofstream& f, const Uni& uni)
-{
-
- f.write(uni.name, sizeof(uni.name));
- f.write((const char*)&uni.studentsCount, sizeof(uni.studentsCount)); //first we write how many students we have!
-
- for (int i = 0; i < uni.studentsCount; i++)
- saveStudentToFile(f, uni.students[i]);
-}
-
-void readUniFromFile(ifstream& f, Uni& uni)
-{
- f.read(uni.name, sizeof(uni.name));
- f.read((char*) &uni.studentsCount, sizeof(uni.studentsCount)); //we read how many students are saved in the file!
-
- uni.students = new Student[uni.studentsCount];
-
- for (int i = 0; i < uni.studentsCount; i++)
- uni.students[i] = readStudentFromFile(f);
-}
-void freeUni(Uni& uni)
-{
- for (int i = 0; i < uni.studentsCount; i++)
- freeStudent(uni.students[i]);
- strcpy(uni.name, "");
- uni.studentsCount = 0;
-}
-void print(const Uni& u)
-{
- cout << u.name << " " << u.studentsCount << endl;
- for (int i = 0; i < u.studentsCount; i++)
- print(u.students[i]);
-}
-int main()
-{
- { //Creating an university and saving to file
- Uni u;
- strcpy(u.name, "FMI");
- u.studentsCount = 3;
-
- u.students = new Student[u.studentsCount];
- u.students[0] = createStudent("Ivan", 81234, 3, 4.5);
- u.students[1] = createStudent("Angel", 12345, 4, 5);
- u.students[2] = createStudent("Mariq", 81234, 5, 5.5);
-
-
- ofstream f("uni.dat", ios::binary);
-
- if (!f.is_open())
- {
- cout << "Error" << endl;
- return -1;
- }
-
- saveUniToFile(f, u);
- freeUni(u);
- }
-
- { //Reading an university from file
-
- Uni myUni;
- ifstream f("uni.dat", ios::binary);
-
- if (!f.is_open())
- {
- cout << "Error" << endl;
- return -1;
- }
-
- readUniFromFile(f, myUni);
-
- print(myUni);
-
- f.close();
-
- freeUni(myUni);
-
- }
-}
-