Ветвления
Условия, альтернативы, переключатели и структурное тестирование программы.
Цель и порядок работы
Освоить алгоритмы с альтернативой и переключателем, а также методику тестирования программ.
Варианты объединяют задачи с выбором действий и вычисления по заданным условиям. Перед кодированием выпишите все случаи, включая равенство значений и границы интервалов: именно на них чаще всего меняется выбранная ветка.
- Выполните задания своего варианта и составьте схему алгоритма.
- Напишите программу C++, скомпилируйте её и устраните ошибки.
- Подготовьте тесты для нормальных, граничных и некорректных входных данных.
- Обеспечьте покрытие решений: каждое условие if должно хотя бы раз дать истину и ложь. Для составных условий проверьте результаты отдельных логических операций.
- Получите результаты и включите тесты в отчёт.
Требования к коду, заготовка отчёта, тестирование и блок-схемы →
Скачать текущие задания и варианты+ в PDF
Перед началом: Лекция 2 · ветвления · Лекция 3 · выражения · Лекция 5 · неопределённое поведение
Задания по вариантам
Выполните все задания назначенного варианта.
Общие требования к вариантам
Решите оба задания. Во втором введите аргумент и все параметры формулы. Вычисляйте только выбранную ветвь; проверяйте её область определения до операций. Циклы, массивы и файловые операции не нужны.
Для каждого условия проверьте значения по обе стороны границы и точно на границе. В варианте 6 граница t = 1 относится к первой ветви, чтобы ветви не пересекались; при t < 1 первая формула не определена над вещественными числами.
Вариант 1
Задание 1
Даны три числа A, B, C. Найти сумму двух наибольших из них.
Задание 2
Вариант 2
Задание 1
Даны три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Вывести новые значения переменных A, B, C.
Задание 2
Вариант 3
Задание 1
Даны три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию или убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Вывести новые значения переменных A, B, C
Задание 2
Вариант 4
Задание 1
Даны три целых числа A, B, C, одно из которых отлично от двух других, равных между собой. Определить порядковый номер числа, отличного от остальных.
Задание 2
Вариант 5
Задание 1
Даны четыре целых числа A, B, C, D, одно из которых отлично от трех других, равных между собой. Определить порядковый номер числа, отличного от остальных.
Задание 2
Вариант 6
Задание 1
На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту точку и ее расстояние от точки A.
При одинаковом расстоянии выведите обе точки и общее расстояние.
Задание 2
Вариант 7
Задание 1
Даны целочисленные координаты точки на плоскости. Если точка совпадает с началом координат, то вывести 0. Если точка не совпадает с началом координат, но лежит на оси OX или OY, то вывести соответственно 1 или 2. Если точка не лежит на координатных осях, то вывести 3.
Задание 2
Вариант 8
Задание 1
Даны координаты точки, не лежащей на координатных осях OX и OY. Определить номер координатной четверти, в которой находится данная точка.
Задание 2
Вариант 9
Задание 1
Даны целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным осям. Найти координаты его четвертой вершины.
Задание 2
Вариант 10
Задание 1
Для данного вещественного x найти значение следующей функции f, принимающей вещественные значения:
Задание 2
Вариант 11
Задание 1
Для данного целого x найти значение следующей функции f, принимающей значения целого типа:
Задание 2
Вариант 12
Задание 1
Для данного вещественного x найти значение следующей функции f, принимающей вещественные значения:
Задание 2
Вариант 13
Задание 1
Для данного вещественного x найти значение следующей функции f, принимающей значения целого типа:
Задание 2
Вариант 14
Задание 1
Дан номер года (положительное целое число). Определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный — 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 — являются).
Задание 2
Вариант 15
Задание 1
Дано целое число, лежащее в диапазоне 1–999. Вывести его строку описание вида «четное двузначное число», «нечетное трехзначное число» и т. д.
Задание 2
Вариант 16+ · Доставка по тарифу
Расчёт с альтернативами
Введите массу посылки от 0 до 20 кг, расстояние от 0 до 1000 км и признак срочности. Положительная масса до 1 кг включительно стоит 200, до 5 кг — 400, иначе 800. До 100 км включительно доплаты нет, дальше прибавьте 150. Срочность увеличивает всю стоимость на 30%. Нулевую массу отклоните.
Проверки+
Выведите отдельно базовую стоимость, доплаты и итог. Подготовьте тесты точно на всех границах и с обеими срочностями. Циклы не обязательны.
Вариант 17+ · Полный разбор уравнения
Квадратное или линейное
Решите уравнение для целых коэффициентов по модулю до 1000. Учтите один и два действительных корня, отсутствие корней, линейное уравнение, тождество и противоречие.
Проверки+
Подставьте найденные корни в левую часть и выведите остатки. Для каждого типа ответа нужен отдельный тест.
Вариант 18+ · Точка и две окружности
Классификация
По точке и двум окружностям определите для каждой: внутри, на границе или снаружи. Радиусы положительные. Сравнивайте квадрат расстояния с квадратом радиуса; равенство определяйте с допуском 10^-9.
Проверки+
Выведите общий итог: внутри обеих, только первой, только второй или ни одной. Граница считается принадлежностью кругу.
Вариант 19+ · Календарная дата
Проверка
Введите день, месяц и год от 1 до 9999. Проверьте существование даты с учётом високосности. Число дней месяца получите через switch и условия.
Следующий день+
Для допустимой даты определите следующую. После 31.12.9999 выведите «вне диапазона». Не используйте массивы или календарные библиотеки.
Вариант 20+ · Кусочная функция с областью определения
Вычисление
Введите x и ненулевой параметр a. Выберите формулу и отдельно проверьте область определения выбранной ветви.
Проверки+
Различайте неверный параметр и недопустимый аргумент выбранной ветви. Не проверяйте ограничения неисполняемых ветвей как запрет для всей функции.
Возможные вопросы к защите
Попробуйте ответить своими словами и показать соответствующее место в своей программе. Под вопросом можно открыть ориентир для ответа и перейти к нужной теме лекции.
Когда нужны независимые if, а когда цепочка if / else if / else?
Покажите, могут ли выполниться несколько ветвей на одном наборе данных.
Повторить: Лекция 2 · ветвления
Как записать попадание числа в интервал?
Объясните запись left <= x && x <= right и отличие от математической цепочки сравнений.
Повторить: Лекция 2 · ветвления · Лекция 3 · выражения
Что такое короткое замыкание && и ||?
Приведите проверку, которая защищает следующее выражение от недопустимого вычисления.
Повторить: Лекция 3 · операторы
Почему проверка ровно на границе обязательна?
Сравните < и <= и покажите вход, который обнаружит ошибку выбора знака.
Повторить: Лекция 2 · ветвления
Чем покрытие решений отличается от покрытия условий?
Для составного условия подберите тесты на результат всего решения и на значения его частей.
Повторить: Лекция 5 · практика диагностики
Когда можно применить switch и зачем нужен break?
Объясните выбор по дискретному значению и переход к следующей ветви без break.
Повторить: Лекция 2 · ветвления