Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 02 / task3_temp.cpp
diff options
context:
space:
mode:
1 files changed, 0 insertions, 148 deletions
-rw-r--r--Sem. 02/task3_temp.cpp148
diff --git a/Sem. 02/task3_temp.cpp b/Sem. 02/task3_temp.cpp
deleted file mode 100644
index d473e70..0000000
--- a/Sem. 02/task3_temp.cpp
+++ /dev/null
@@ -1,148 +0,0 @@
-#include <iostream>
-#include <fstream>
-#pragma warning(disable:4996)
-using namespace std;
-
-const size_t capacity = 1024;
-
-enum class Speciality
-{
- computerScience,
- softwareEngineering
-};
-
-struct StudentRecord
-{
- char firstName[capacity];
- char lastName[capacity];
-
- char fnRaw[capacity];
-
- //parsed by fnRaw
- Speciality studentSpeciality;
- int fn;
- //
-
- char email[capacity];
-};
-
-struct StudentCollection
-{
- StudentRecord* data;
-};
-
-size_t getLinesCount(const char* fileName)
-{
- ifstream file(fileName);
-
- if (!file.is_open())
- return 0;
-
- size_t count = 0;
-
- while (!file.eof())
- {
- char buff[capacity];
- file.getline(buff, capacity);
- count++;
- }
-
- file.close();
-
- return count;
-
-}
-
-void parseField(char* dest, const char*& source)
-{
- while (*source != ',' && *source != '\0')
- {
- *dest = *source;
- dest++;
- source++;
- }
- source++;
- *dest = '\0';
-}
-
-void parseFn(StudentRecord& currentStudent)
-{
- if (strlen(currentStudent.fnRaw) < 5)
- return;
-
- if (currentStudent.fnRaw[4] == '6')
- currentStudent.studentSpeciality = Speciality::softwareEngineering;
- else if (currentStudent.fnRaw[4] == '8')
- currentStudent.studentSpeciality = Speciality::computerScience;
-
- currentStudent.fn = atoi(currentStudent.fnRaw + 5);
-
-}
-
-void parseStudent(StudentRecord& currentStudent, const char* line)
-{
- parseField(currentStudent.firstName, line);
- parseField(currentStudent.lastName, line);
- parseField(currentStudent.fnRaw, line);
- parseField(currentStudent.email, line);
- parseFn(currentStudent);
-}
-
-void printStudent(const StudentRecord& st)
-{
- std::cout << "First name: " << st.firstName << ", second name: " << st.lastName << ", speciality: ";
-
- if (st.studentSpeciality == Speciality::computerScience)
- std::cout << "computer science, ";
- else
- std::cout << "software engineering, ";
-
- std::cout << "number: " << st.fn << ", email: " << st.email << std::endl;
-
-}
-
-size_t initStudentCollection(StudentCollection& collection, const char* fileName)
-{
- size_t studentsCount = getLinesCount(fileName) - 1;
-
- collection.data = new StudentRecord[studentsCount];
-
- ifstream file(fileName);
- if (!file.is_open())
- {
- cout << "error";
- return 0;
- }
-
- char buff[capacity];
- file.getline(buff, capacity);
- for (int i = 0; i < studentsCount; i++)
- {
- file.getline(buff, capacity);
- parseStudent(collection.data[i], buff);
- }
-
- return studentsCount;
-}
-
-void saveToFile(const char* fileName, const StudentCollection& collection, size_t studentsCount)
-{
- ofstream file(fileName);
- if (!file.is_open())
- return;
- file << "Ime, Familiya, Fakulteten nomer, Imeyl adres" << std::endl; //header;
- for (int i = 0; i < studentsCount; i++)
- file << collection.data[i].firstName << "," << collection.data[i].lastName << "," << collection.data[i].fnRaw << "," << collection.data[i].email << std::endl;
-}
-int main()
-{
- const char* fileName = "lists/all_students.csv";
-
- StudentCollection collection;
- size_t studentsCount = initStudentCollection(collection, fileName);
-
- //changes to students email
-
- saveToFile(fileName, collection, studentsCount);
- delete[] collection.data;
-}