Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTMLDecode добавила примеры в описание #94

Open
wants to merge 3 commits into
base: master-new
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115 changes: 112 additions & 3 deletions tasks/02/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -705,15 +705,69 @@ std::string HtmlEncode(std::string const& text)
- `>` (знак больше) заменяется на `>`
- `&` (амперсанд) заменяется на `&`

Например, строка `Cat <says> "Meow". M&M’s` должна быть преобразована в строку
`Cat &lt;says&gt; &quot;Meow&quot;. M&amp;M&apos;s`

Разработайте на ее основе программу, выполняющую построчное html-кодирование текста, поступающего со стандартного потока ввода, и выводящую результат в стандартный поток вывода.

Символы &, полученные в процессе кодирования, не должны повторно кодироваться.

<span style="color:red">Внимание, реализация данной функции должна иметь сложность близкую к O(N)</span>

##### Примеры входных и выходных данных

###### Пример 1

Ввод:

```txt
This is a test with 'single quotes' and "double quotes".
```

Вывод:

```txt
This is a test with &apos;single quotes&apos; and &quot;double quotes&quot;.
```

Объяснение:
- `'` (одинарные кавычки) заменяется на `&apos;`
- `"` (двойные кавычки) заменяется на `&quot;`

###### Пример 2

Ввод:

```txt
Mix of "quotes", <tags>, and & symbols @.
```

Вывод:

```txt
Mix of &quot;quotes&quot;, &lt;tags&gt;, and &amp; symbols @.
```

Объяснение:
- `"` (двойные кавчки) заменяется на `&quot;`
- `<` (знак меньше) заменяется на `&lt;`
- `>` (знак больше) заменяется на `&gt;`
- `&` (амперсанд) заменяется на `&amp;`
- `@` - не входит в список замены, остается без изменений.

###### Пример 3

Ввод:

```txt
No special characters here!
```

Вывод:

```txt
No special characters here!
```

Объяснение: строка без специальных символов остается без изменений.

#### Вариант 5 – HTML Decode – 60 баллов

Разработайте функцию
Expand All @@ -729,6 +783,61 @@ std::string HtmlDecode(std::string const& html)

<span style="color:red">Внимание, реализация данной функции должна иметь сложность близкую к O(N)</span>

##### Примеры входных и выходных данных

###### Пример 1

Ввод:

```txt
Hello &lt;world&gt; &amp; all &quot;users&quot;!
```

Вывод:

```txt
Hello <world> & all "users"!
```

Объяснение:
Hello, world, all, users, ! - без изменений,
- `&lt;` (знак меньше) заменяется на `<`
- `&gt;` (знак больше) заменяется на `>`
- `&amp;` (амперсанд) заменяется на `&`
- `&quot;` (двойная кавычка) заменяется на `"`

###### Пример 2

Ввод:

```txt
&unknown; textы
```

Вывод:

```txt
&unknown; text
```

Объяснение: `&unknown;` - не входит в список замены, остается без изменений

###### Пример 3

Ввод:

```txt
&lt;&gt;&quot;&apos;&amp;
```

Вывод:

```txt
<>"'&
```

Объяснение: замена всех символов.

### Задание 3 – работа с контейнером map

Ознакомьтесь с возможностями контейнера [std::map](https://en.cppreference.com/w/cpp/container/map) библиотеки STL и выполните задание, соответствующее номеру Вашего варианта.
Expand Down