Website Summary Files Commits Branches @commit @diff @stats
path: root / pract KN / week2 / relation.cpp
diff options
context:
space:
mode:
Commit73004f08a00927d8541726e4ae5267382b92ef2f (patch)
Author
 Stoycho Kyosev <68247567+stoychoX@users.noreply.github.com>
2022-03-07 16:56:25 +0200
Committer
 GitHub <noreply@github.com>
2022-03-07 16:56:25 +0200
Files0045aad3a5ca27bf3254a055a3edfe753b4b9eda /pract KN/week2/relation.cpp
Object-oriented_programming_FMI-73004f08a00927d8541726e4ae5267382b92ef2f.tar
Object-oriented_programming_FMI-73004f08a00927d8541726e4ae5267382b92ef2f.tar.gz
Object-oriented_programming_FMI-73004f08a00927d8541726e4ae5267382b92ef2f.zip
Parent76200b416f1c4f076f38c8f5fddb6883f7685fd9 (diff)
add relation solution
1 files changed, 101 insertions, 0 deletions
-rw-r--r--pract KN/week2/relation.cpp101
diff --git a/pract KN/week2/relation.cpp b/pract KN/week2/relation.cpp
new file mode 100644
index 0000000..ce4ea84
--- /dev/null
+++ b/pract KN/week2/relation.cpp
@@ -0,0 +1,101 @@
+#include<iostream>
+#include<fstream>
+
+struct pair {
+ int first;
+ int second;
+};
+
+pair makePair(int fst, int snd) {
+ return { fst, snd };
+}
+
+void initPair(pair& arg, int fst, int snd) {
+ arg.first = fst;
+ arg.second = snd;
+}
+
+const int MAX_SIZE = 25;
+
+struct relation {
+ pair data[MAX_SIZE];
+ int size = 0;
+};
+
+void addPair(relation& toAdd, const pair& p) {
+ if (toAdd.size > MAX_SIZE - 1)
+ return;
+ toAdd.data[toAdd.size++] = makePair(p.first, p.second);
+}
+
+void addPair(relation& toAdd, int first, int second) {
+ if (toAdd.size > MAX_SIZE - 1)
+ return;
+ toAdd.data[toAdd.size++] = makePair(first, second);
+}
+
+void writePair(const pair& p, std::ofstream& in) {
+ in << p.first << " " << p.second << std::endl;
+}
+
+pair readPair(std::ifstream& in) {
+ int first = 0;
+ int second = 0;
+ in >> first >> second;
+ return makePair(first, second);
+}
+
+void writeRelation(const relation& r) {
+ std::ofstream outFile("relation.txt");
+ if (outFile.bad())
+ return;
+
+ outFile << r.size << std::endl;
+
+ for (int i = 0; i < r.size; i++)
+ writePair(r.data[i], outFile);
+
+ outFile.close();
+}
+
+relation readRelation() {
+ std::ifstream inFile("relation.txt");
+
+ if (inFile.bad())
+ throw std::exception("Problem with reading the file");
+
+ relation toReturn;
+ int size = 0;
+ inFile >> size;
+
+ for (int i = 0; i < size; i++)
+ addPair(toReturn, readPair(inFile));
+
+ inFile.close();
+ return toReturn;
+}
+
+void printPair(const pair& p) {
+ std::cout << p.first << " " << p.second << std::endl;
+}
+
+void printRelation(const relation& r) {
+ for (int i = 0; i < r.size; i++)
+ printPair(r.data[i]);
+}
+
+int main() {
+ relation example;
+ // {{1, 2, 3, 4}, <}
+ addPair(example, 1, 2);
+ addPair(example, 1, 3);
+ addPair(example, 1, 4);
+ addPair(example, 2, 3);
+ addPair(example, 2, 4);
+ addPair(example, 3, 4);
+
+ printRelation(example);
+ std::cout << std::endl;
+ writeRelation(example);
+ printRelation(readRelation());
+}