diff options
1 files changed, 43 insertions, 0 deletions
| -rw-r--r-- | Sem. 03/README.md | 43 |
diff --git a/Sem. 03/README.md b/Sem. 03/README.md index 446c812..22d7f8d 100644 --- a/Sem. 03/README.md +++ b/Sem. 03/README.md @@ -165,3 +165,46 @@ int main() **Задача 2:** Да се напише функция, която намира големината на файл. **Задача 3:** Да се напише функция, която заменя всяко срещане на символ във файл с друг символ. Съдържанието на файла не трябва да се зарежда в паметта. + +**Задача 2**: + +Да се реализира програма за изглед и модификация на двоични файлове (hex viewer). При стартиране на програмата трябва да се въведе път до двоичен файл и да зареди съдържанието на файла в паметта. След като файлът се е заредил в паметта, трябва да поддържате следните операции: + + - Преглед на файла (view) отпечатва байтовете на файла (в шестнайсетична бройна система). o След това да се отпечатат интерпретацията на байтовете като символи. Ако байтът отговаря на малка/голяма латинска буква, то да се отпечата символа. В противен случай да се отпечатва точка. + - Промяна на байт по индекс (change ). + - Премахване на последния байт (remove) + - Добавяне на байт в края (add ). + - Запазване на промените в същия файл (save) + - Запазване на промените в друг файл (save as ) +Нека имаме двоичен файл, myData.dat, който се е получил след изпълнението на следния +c++ код: + ```c++ +int x = 25409; +ofstream file(“myData.dat”, ios::binary); file.write( (const char*)&x, sizeof(x)); +``` + +Да се реализира прост интерфейс, с който да се извикват написаните фунцкии през конзолата. + +**Пример** (входът от потребителя започва с '>'): + + ``` +Enter a file path: +> myData.dat +File loaded successfully! Size: 4 bytes +> view +41 63 00 00 +A c . . +>change 1 65 +Operation successfully executed! +> view +41 65 00 00 +A e . . +> remove +> view + 41 65 00 + A e . + >save + File successfully saved +``` + +**Забележка:** Не се изисква поддържането на конзолен интерфейс. Можете само да реализирате функциите и да ги изпробвате в main функцията. |
