1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# Задачи - ООП, Седмица 6, 25.03.2026
'define expected-reading 3 min
'define created 24 March 2026
'define edited 24 March 2026
[$pagenav]
## За решаване
### Задача 1
.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week06/Exercise01.cpp Решение]
Реализирайте програма, която създава [=текстов=] файл "HelloWorld.txt" и записва в него низа [`Hello World!`].
Уверете се че файла се създава и това е неговото съдържание.
### Задача 2
.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week06/Exercise02.cpp Решение]
От входа получавате име на [=текстов=] файл.
След това трябва да принтирате съдържанието на този файл.
### Задача 3
.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week06/Exercise03.cpp Решение]
Реализирайте програма, която приема на първия ред име на файл и след това текст.
Този текст може да е на няколко реда, като [=няма ограничение в дължината на редовете=]!
Знака [`@`] обозначава край на входния текст (и съответно, край на програмата).
Трябва като резултат да е създаден [=текстов=] файл с подаденото име и съдържание.
### Задача 4
.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week06/Exercise04.cpp Решение]
От входа получавате име на [=текстов=] файл.
Трябва да изкарате всички редове във файла, в обратен ред (последния ред става първи, пред-последния втори и так. нат.).
.important
Използвайте минимално количество памет!
### Задача 5
.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week06/Exercise05.cpp Решение]
От входа получавате на един ред име на файл.
След това неотрицателно цяло число [`N`] и накрая [`N`] на брой 64-битови числа с плаваща запетая.
Трябва да запазите всички тези числа в [=двоичен=] файл с подаденото име.
.question
Каква е разликата между [`<<`] и [`write`]?
Кое е по-удачно тук?
### Задача 6
.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week06/Exercise06.cpp Решение]
От входа получавате на един ред име на [=двоичен=] файл.
Този файл съдържа 64-битови числа с плаваща запетая.
Изкарайте на екрана всички числа от файла.
Изтеглете следните файлове и проверете дали вашата програма изкарва коректен изход:
.table_2
|= Файл
|= Изход
|: [url ./simple.dat simple.dat]
|: 1.1 2.2 3.3 4.4 5.5
|: [url ./empty.dat empty.dat]
|: [*нищо, файла е празен*]
|: [url ./constants.dat constants.dat]
|: 2.71828 3.14159 1.61803 0.57721
### Задача 7
.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week06/Exercise07.cpp Решение]
Реализирайте структура [`Smartphone`], която съдържа цяло 16-битово число за номер на версията на операционната система, неотрицателно 64-битово число за сериен номер, 32-битово число с плаваща запетая за [url https://www.gsmarena.com/glossary.php3?term=sar SAR] и буква за ревизия на хардуера, [=в този ред=].
От входа получавате неотрицателно цяло число [`N`] и след това данни за [`N`] на брой смартфона.
Трябва да запишете всички тези стойности в [=двоичен=] файл.
### Задача 8
.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week06/Exercise08.cpp Решение]
Реализирайте структура [`Smartphone`] със същите полета като в предходната задача.
От входа получавате на един ред името на [=двоичен=] файл.
Трябва да изкарате на екрана (стойностите на) всички смартофони във файла.
Изтеглете следните файлове и проверете дали вашата програма изкарва коректен изход:
.table_2
|= Файл
|= Изход
|: [url ./galaxyS26Ultra.dat galaxyS26Ultra.dat]
|: 16 83001852 1.09 B
|: [url ./oneplus15.dat oneplus15.dat]
|: 16 55929 1.17 A\n16 95200 1.17 T\n16 110999 1.08 R
|