Summary Files Commits Branches @commit @diff @stats
path: root / Year 1 / Object-oriented Programming / 03-Practice-08.03.2022.cpp
diff options
context:
space:
mode:
Commit8ce9886a205ede444f09778cdbe4f3e158f99d0e (patch)
Author
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-03-08 21:05:31 +0200
Committer
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-03-08 21:05:31 +0200
Files822134869a8287c8ae67729378332898e1506a6d /Year 1/Object-oriented Programming/03-Practice-08.03.2022.cpp
uni-projects-8ce9886a205ede444f09778cdbe4f3e158f99d0e.tar
uni-projects-8ce9886a205ede444f09778cdbe4f3e158f99d0e.tar.gz
uni-projects-8ce9886a205ede444f09778cdbe4f3e158f99d0e.zip
Parente3ae4cd3affc234e3127d5aa69c34f1c420b964d (diff)
Added todays oop practice
1 files changed, 136 insertions, 0 deletions
-rw-r--r--Year 1/Object-oriented Programming/03-Practice-08.03.2022.cpp136
diff --git a/Year 1/Object-oriented Programming/03-Practice-08.03.2022.cpp b/Year 1/Object-oriented Programming/03-Practice-08.03.2022.cpp
new file mode 100644
index 0000000..b148159
--- /dev/null
+++ b/Year 1/Object-oriented Programming/03-Practice-08.03.2022.cpp
@@ -0,0 +1,136 @@
+#include <iostream>
+#include <fstream>
+#include <cstring>
+
+const int LINE_BUFFER_SIZE = 1024;
+const int MAX_COMPANY_NAME_SIZE = 25;
+
+struct JobOffer {
+ char CompanyName[MAX_COMPANY_NAME_SIZE];
+
+ unsigned int ProgrammersInTeam;
+ unsigned int PayedTimeOff;
+ long long SalaryAfterFinishedProduct;
+};
+
+void coutJobOffer(JobOffer& jo) {
+ std::cout << jo.CompanyName << " | Programmers: " << jo.ProgrammersInTeam << " | Time Off: " << jo.PayedTimeOff << " | Salary: " << jo.SalaryAfterFinishedProduct << std::endl;
+}
+
+struct JobOfferCollection {
+ JobOffer* items;
+ int count;
+ int length;
+};
+
+void addJOtoJOC(JobOffer& jo, JobOfferCollection& joc) {
+ if (joc.count == joc.length) {
+ JobOffer* temp = new JobOffer[joc.length <<= 1];
+ for (int i = 0; i < joc.count; i++) temp[i] = joc.items[i];
+ delete[] joc.items;
+ joc.items = temp;
+ }
+
+ joc.items[joc.count++] = jo;
+}
+
+void cinJobOffer(JobOffer& jo) {
+ char buffer[MAX_COMPANY_NAME_SIZE];
+ std::cin.ignore();
+ std::cin.getline(buffer, MAX_COMPANY_NAME_SIZE);
+ strcpy(jo.CompanyName, buffer);
+
+ std::cin >> jo.ProgrammersInTeam >> jo.PayedTimeOff >> jo.SalaryAfterFinishedProduct;
+}
+
+int saveToFile(JobOfferCollection& joc, const char* fileName) {
+ std::ofstream outFile(fileName, std::ios::binary | std::ios::app);
+ if (!outFile.is_open())
+ return -1;
+
+ for (int i = 0; i < joc.length; i++) {
+ outFile.write(joc.items[i].CompanyName, MAX_COMPANY_NAME_SIZE);
+ outFile.write((char*)&joc.items[i].ProgrammersInTeam, sizeof(joc.items[i].ProgrammersInTeam));
+ outFile.write((char*)&joc.items[i].PayedTimeOff, sizeof(joc.items[i].PayedTimeOff));
+ outFile.write((char*)&joc.items[i].SalaryAfterFinishedProduct, sizeof(joc.items[i].SalaryAfterFinishedProduct));
+ }
+
+ outFile.close();
+
+ return 1;
+}
+
+JobOfferCollection readFromFile(const char* fileName) {
+ std::ifstream inFile(fileName, std::ios::binary);
+ if (!inFile.is_open())
+ return {};
+
+ JobOfferCollection joc = { new JobOffer[1], 0, 1 };
+ while (!inFile.eof()) {
+ JobOffer newJo = {};
+ inFile.read(newJo.CompanyName, MAX_COMPANY_NAME_SIZE);
+ inFile.read((char*)&newJo.ProgrammersInTeam, sizeof(newJo.ProgrammersInTeam));
+ inFile.read((char*)&newJo.PayedTimeOff, sizeof(newJo.PayedTimeOff));
+ inFile.read((char*)&newJo.SalaryAfterFinishedProduct, sizeof(newJo.SalaryAfterFinishedProduct));
+ addJOtoJOC(newJo, joc);
+ }
+
+ inFile.close();
+
+ return joc;
+}
+
+void filterOffers(const char* filePath, long long minSalary) {
+ JobOfferCollection readJoc = readFromFile(filePath);
+
+ for (int i = 0; i < readJoc.count; i++)
+ if (readJoc.items[i].SalaryAfterFinishedProduct >= minSalary)
+ coutJobOffer(readJoc.items[i]);
+
+ delete[] readJoc.items;
+}
+
+bool existOffer(const char* filePath, const char* name) {
+ bool toRet = false;
+ JobOfferCollection readJoc = readFromFile(filePath);
+
+ for (int i = 0; i < readJoc.count; i++) {
+ if (!strcmp(readJoc.items[i].CompanyName, name)) {
+ toRet = true;
+ break;
+ }
+ }
+
+ delete[] readJoc.items;
+ return toRet;
+}
+
+void taskSaveItems() {
+ int n;
+ std::cin >> n;
+
+ JobOfferCollection joc = { new JobOffer[n], n, n };
+
+ for (int i = 0; i < joc.length; i++)
+ cinJobOffer(joc.items[i]);
+
+ saveToFile(joc, "shefove.joc");
+
+ delete[] joc.items;
+}
+
+void taskSalary() {
+ int minSalary;
+ std::cin >> minSalary;
+
+ filterOffers("shefove.joc", minSalary);
+}
+
+void taskExistOffer() {
+ char buff[LINE_BUFFER_SIZE];
+ std::cin.getline(buff, LINE_BUFFER_SIZE);
+ std::cout << existOffer("shefove.joc", buff) << std::endl;
+}
+
+int main() {
+}