aboutsummaryrefslogtreecommitdiff
path: root/week06/Exercise06.cpp
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2024-04-03 17:47:07 +0300
committerSyndamia <kamen@syndamia.com>2024-04-03 17:47:07 +0300
commit44d085f265583f0e3cbef294bbe2c8e300aaa452 (patch)
tree4899165f82a51beca1d4726db441a2749b628b9f /week06/Exercise06.cpp
parent6a8154ad7f2cbfbb2ae4f2ddda1cd0db0e430e44 (diff)
downloadoop-2023-solutions-44d085f265583f0e3cbef294bbe2c8e300aaa452.tar
oop-2023-solutions-44d085f265583f0e3cbef294bbe2c8e300aaa452.tar.gz
oop-2023-solutions-44d085f265583f0e3cbef294bbe2c8e300aaa452.zip
[w6] Added exercise descriptions and solutions to 1-9
Diffstat (limited to 'week06/Exercise06.cpp')
-rw-r--r--week06/Exercise06.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/week06/Exercise06.cpp b/week06/Exercise06.cpp
new file mode 100644
index 0000000..d05f495
--- /dev/null
+++ b/week06/Exercise06.cpp
@@ -0,0 +1,42 @@
+#include <fstream>
+#include <iostream>
+
+int main() {
+ char fileName1[1024];
+ std::cin.getline(fileName1, 1024);
+ char fileName2[1024];
+ std::cin.getline(fileName2, 1024);
+
+ std::fstream file1(fileName1);
+ if (!file1.is_open()) {
+ std::cout << "Couldn't open file!" << std::endl;
+ return 1;
+ }
+
+ std::ifstream file2(fileName2);
+ if (!file2.is_open()) {
+ std::cout << "Couldn't open file!" << std::endl;
+ return 1;
+ }
+
+ file1.seekg(0, std::ios::end);
+ size_t endIndex = file1.tellg();
+ size_t middleIndex = endIndex / 2;
+ size_t latterHalfSize = endIndex - middleIndex;
+
+ file1.seekg(middleIndex, std::ios::beg);
+ char* buffer = new char[latterHalfSize];
+ file1.read(buffer, latterHalfSize);
+ file1.clear();
+
+ file1.seekp(middleIndex, std::ios::beg);
+ while (file2.peek() > -1) {
+ file1.put(file2.get());
+ }
+ file1.write(buffer, latterHalfSize);
+
+ delete[] buffer;
+
+ file1.close();
+ file2.close();
+}