From 5323ea8eeb528fbd716e1f1c61187bc8668f86b2 Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Sun, 3 Apr 2022 14:47:54 +0300 Subject: Add files via upload --- k_1_SI/task2_write.cpp | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 k_1_SI/task2_write.cpp (limited to 'k_1_SI/task2_write.cpp') diff --git a/k_1_SI/task2_write.cpp b/k_1_SI/task2_write.cpp new file mode 100644 index 0000000..a5ae67e --- /dev/null +++ b/k_1_SI/task2_write.cpp @@ -0,0 +1,83 @@ +#include +#include +#include +using namespace std; + +const size_t MAX_NAME_SIZE = 22; +struct Student +{ + char name[MAX_NAME_SIZE + 1]; + bool isMale; + size_t fn; +}; + +bool isLower(char ch) +{ + return ch >= 'a' && ch <= 'z'; +} + +bool areAllLowerCase(const char* str) +{ + while(*str) + { + if(!isLower(*str)) + return false; + str++; + } + return true; +} + +bool isUpper(char ch) +{ + return ch >= 'A' && ch <= 'Z'; +} + +bool isNameValid(const char* name) +{ + size_t len = strlen(name); + if(len == 0 || len > MAX_NAME_SIZE) + return false; + return isUpper(*name) && areAllLowerCase(name + 1); +} + +void initStudent(Student& st, const char* name, size_t fn, bool isMale) +{ + if(!isNameValid(name)) + strcpy(st.name, "Unknown"); + else + strcpy(st.name, name); + + st.isMale = isMale; + st.fn = fn; +} + +void saveToFile(const Student* students, size_t count, ofstream& file) +{ + file.write((const char*)students, count * sizeof(Student)); +} + + +int main() +{ + const size_t studentsCount = 4; + Student* arr = new Student[studentsCount]; + initStudent(arr[0], "Ivan", 1, true); + initStudent(arr[1], "Petur", 2, true); + initStudent(arr[2], "Alex", 3, true); + initStudent(arr[3], "Katerina", 4, false); + + ofstream file("students.dat", ios::binary); + + if(!file.is_open()) + { + std::cout << "Error while opening the file!" << std::endl; + delete[] arr; //! + return -1; + } + + saveToFile(arr, studentsCount, file); + + delete[] arr; + + return 0; +} -- cgit v1.3.1-23-gd82d