Website Summary Files Commits Branches @commit @diff @stats
path: root / Week06 / Exercise05.cpp
diff options
context:
space:
mode:
Commit8f162cde46a34d04e3a8a655067ee5174258e249 (patch)
Author
 Syndamia <kamen@syndamia.com>
2026-03-28 16:20:14 +0200
Committer
 Syndamia <kamen@syndamia.com>
2026-03-28 16:20:14 +0200
Filesbd99bfbbfd62759abee897216505def5a5e8dc31 /Week06/Exercise05.cpp
oop-2025-solutions-8f162cde46a34d04e3a8a655067ee5174258e249.tar
oop-2025-solutions-8f162cde46a34d04e3a8a655067ee5174258e249.tar.gz
oop-2025-solutions-8f162cde46a34d04e3a8a655067ee5174258e249.zip
Parent571dc57f812a685bda7bd3baf8aaf2ef56feae65 (diff)
feat(Week06): Add solutions
1 files changed, 35 insertions, 0 deletions
-rw-r--r--Week06/Exercise05.cpp35
diff --git a/Week06/Exercise05.cpp b/Week06/Exercise05.cpp
new file mode 100644
index 0000000..0b4d434
--- /dev/null
+++ b/Week06/Exercise05.cpp
@@ -0,0 +1,35 @@
+#include <iostream>
+#include <fstream>
+
+int main() {
+ char fileName[1024];
+ std::cin.getline(fileName, sizeof(fileName) / sizeof(*fileName));
+
+ unsigned N;
+ std::cin >> N;
+
+ double* numbers = new double[N];
+ for (unsigned i = 0; i < N; ++i)
+ std::cin >> numbers[i];
+
+ std::ofstream outFile(fileName, std::ios::binary | std::ios::trunc);
+
+ if (!outFile.is_open()) {
+ std::cout << "Couldn't open file!" << std::endl;
+ }
+ else {
+ for (unsigned i = 0; i < N; ++i) {
+ // На практика, << конвертира подадената стойност до низ и след
+ // това я подава на write.
+ // Като говорим за двоични файлове, не говорим за низове и низови
+ // репрезентации, т.е. искаме да запишем байтовете в паметта
+ // които съставят числата (double е 64-битов, т.е. 8 байтов).
+ // Припомняме си, че char типа също е 8 бита, 1 байт, тоест тук
+ // трябва да мислим за char* като все едно byte*, не като низ.
+ outFile.write((const char*)(numbers + i), sizeof(*numbers));
+ }
+ }
+
+ delete[] numbers;
+ return 0;
+}