diff --git a/tasks/02/README.md b/tasks/02/README.md index a50af94..506f15f 100644 --- a/tasks/02/README.md +++ b/tasks/02/README.md @@ -705,15 +705,69 @@ std::string HtmlEncode(std::string const& text) - `>` (знак больше) заменяется на `>` - `&` (амперсанд) заменяется на `&` -Например, строка `Cat "Meow". M&M’s` должна быть преобразована в строку -`Cat <says> "Meow". M&M's` - Разработайте на ее основе программу, выполняющую построчное html-кодирование текста, поступающего со стандартного потока ввода, и выводящую результат в стандартный поток вывода. Символы &, полученные в процессе кодирования, не должны повторно кодироваться. Внимание, реализация данной функции должна иметь сложность близкую к O(N) +##### Примеры входных и выходных данных + +###### Пример 1 + +Ввод: + +```txt +This is a test with 'single quotes' and "double quotes". +``` + +Вывод: + +```txt +This is a test with 'single quotes' and "double quotes". +``` + +Объяснение: +- `'` (одинарные кавычки) заменяется на `'` +- `"` (двойные кавычки) заменяется на `"` + +###### Пример 2 + +Ввод: + +```txt +Mix of "quotes", , and & symbols @. +``` + +Вывод: + +```txt +Mix of "quotes", <tags>, and & symbols @. +``` + +Объяснение: +- `"` (двойные кавчки) заменяется на `"` +- `<` (знак меньше) заменяется на `<` +- `>` (знак больше) заменяется на `>` +- `&` (амперсанд) заменяется на `&` +- `@` - не входит в список замены, остается без изменений. + +###### Пример 3 + +Ввод: + +```txt +No special characters here! +``` + +Вывод: + +```txt +No special characters here! +``` + +Объяснение: строка без специальных символов остается без изменений. + #### Вариант 5 – HTML Decode – 60 баллов Разработайте функцию @@ -729,6 +783,61 @@ std::string HtmlDecode(std::string const& html) Внимание, реализация данной функции должна иметь сложность близкую к O(N) +##### Примеры входных и выходных данных + +###### Пример 1 + +Ввод: + +```txt +Hello <world> & all "users"! +``` + +Вывод: + +```txt +Hello & all "users"! +``` + +Объяснение: +Hello, world, all, users, ! - без изменений, +- `<` (знак меньше) заменяется на `<` +- `>` (знак больше) заменяется на `>` +- `&` (амперсанд) заменяется на `&` +- `"` (двойная кавычка) заменяется на `"` + +###### Пример 2 + +Ввод: + +```txt +&unknown; textы +``` + +Вывод: + +```txt +&unknown; text +``` + +Объяснение: `&unknown;` - не входит в список замены, остается без изменений + +###### Пример 3 + +Ввод: + +```txt + <>"'& +``` + +Вывод: + +```txt + <>"'& +``` + +Объяснение: замена всех символов. + ### Задание 3 – работа с контейнером map Ознакомьтесь с возможностями контейнера [std::map](https://en.cppreference.com/w/cpp/container/map) библиотеки STL и выполните задание, соответствующее номеру Вашего варианта.