Что сделано#
Добавлена тема 1.4 «Циклы и перебор вариантов» по образцу тем 1.2 и 1.3 — та же структура папки и тот же стиль (шпаргалка + три файла задач, фенсы '''cpp, врезки > [!NOTE] / > [!WARNING]).
Новая папка C++/Тема 1.4. Циклы и перебор вариантов/:
| Файл | Что внутри |
|---|---|
Необходимый материал.md |
11 разделов: что такое цикл; for, while, do-while; таблица «какой цикл выбрать»; вложенные циклы и полный перебор; 8 шаблонов задач (сумма, подсчёт, максимум/минимум, поиск первого, количество максимумов, второй максимум, серия); последовательность до нуля; формула вместо цикла; типичные ошибки; шаблон программы |
Задачи/Обязательные задачи (LMS).md |
2 задачи из LMS с эталонными решениями: «Подготовка Юры», «Палиндром» |
Задачи/Практика.md |
9 задач, разбираемых на трёх занятиях: сумма положительных чисел, первая высокая башня, чередование, лучший результат, после максимума + раздел ОГЭ/ЕГЭ (сумма кратных 3, количество отличников, максимум до нуля, количество максимумов до нуля) |
Задачи/Необязательные задачи.md |
5 задач на дополнительную тренировку: сумма цифр числа, второй максимум, ёлочки (оптимизация формулой), сумма до нуля, таблица умножения (вложенные циклы) |
Источники — документы из папки docs: «Тема 1.4 Теория», «Практика 1.4» (сценарий блока), «Практика 1.4.1.3 / 1.4.2.3 / 1.4.3.3» (сценарии трёх уроков), «Практика 1.4 Задачи LMS» (эталонные решения). Условия, примеры и идеи решений взяты из них; формулировки приведены к виду, принятому в темах 1.2 и 1.3.
Чем проверено#
Все решения, которые лежат в основе задач (эталонные из LMS, разобранные на практике и ОГЭ/ЕГЭ, а также решения придуманных необязательных задач), скомпилированы g++ -std=c++17 -O2 и запущены на примерах из условий — 28 проверок, все прошли:
- Подготовка Юры:
10 3 → 3,5 5 → 1,3 5 → 1 - Палиндром:
123 → 131,9 → 11,99 → 101 - Сумма положительных:
6 / 4 -3 8 0 -2 5 → 17 - Первая высокая башня:
6 30 / 12 18 27 35 31 28 → 4,3 100 / 10 20 30 → 0 - Чередование:
2 7 8 5 4 → YES,2 4 5 7 → NO - Лучший результат:
98 87 98 91 75 98 → 3 - После максимума:
5 9 2 4 8 1 → 15 - Сумма кратных 3:
10 → 18; количество отличников:→ 4 - Максимум до нуля:
17 25 11 42 39 0 → 42; количество максимумов:→ 2 - Сумма цифр:
1234 → 10,7 → 7,1000 → 1 - Второй максимум:
3 9 4 9 7 → 7,-5 -1 -9 -3 → -3 - Ёлочки:
1 → 5,2 → 11,2·10⁹ → 4000000006000000001(проверка, чтоlong longхватает) - Сумма до нуля:
4 7 2 0 → 13,0 → 0 - Таблица умножения:
3 → 1 2 3 / 2 4 6 / 3 6 9
Скрипт проверки и исходники лежат вне репозитория, в папке проекта scratch/1.4/ (run_tests.sh), чтобы не засорять курс.
Что не проверено#
- В самих файлах темы решений нет (как и в темах 1.2 и 1.3) — проверялись решения, на которых основаны задачи, а не текст markdown.
- Задачи в LMS не сверялись с реальным списком задач на платформе: взяты те две, что описаны в документе «Практика 1.4 Задачи LMS».
- Ограничения по времени и памяти для задач из LMS в документах не указаны, поэтому в задачах на перебор (например, «Палиндром») отмечено, что полное решение требует строк — тема 1.6.
- Markdown отрендерен не был: проверена только структура (парность фенсов, заголовки, таблицы).