Загружаем лабораторные…
// C++ · Лабораторная 02

Ветвления

Условия, альтернативы, переключатели и структурное тестирование программы.

Цель и порядок работы

Освоить алгоритмы с альтернативой и переключателем, а также методику тестирования программ.

Варианты объединяют задачи с выбором действий и вычисления по заданным условиям. Перед кодированием выпишите все случаи, включая равенство значений и границы интервалов: именно на них чаще всего меняется выбранная ветка.

  1. Выполните задания своего варианта и составьте схему алгоритма.
  2. Напишите программу C++, скомпилируйте её и устраните ошибки.
  3. Подготовьте тесты для нормальных, граничных и некорректных входных данных.
  4. Обеспечьте покрытие решений: каждое условие if должно хотя бы раз дать истину и ложь. Для составных условий проверьте результаты отдельных логических операций.
  5. Получите результаты и включите тесты в отчёт.

Требования к коду, заготовка отчёта, тестирование и блок-схемы →

Скачать текущие задания и варианты+ в PDF

Перед началом: Лекция 2 · ветвления · Лекция 3 · выражения · Лекция 5 · неопределённое поведение

Задания по вариантам

Выполните все задания назначенного варианта.

Общие требования к вариантам

Решите оба задания. Во втором введите аргумент и все параметры формулы. Вычисляйте только выбранную ветвь; проверяйте её область определения до операций. Циклы, массивы и файловые операции не нужны.

Для каждого условия проверьте значения по обе стороны границы и точно на границе. В варианте 6 граница t = 1 относится к первой ветви, чтобы ветви не пересекались; при t < 1 первая формула не определена над вещественными числами.

15 основных + 5 вариантов+

Вариант 1

Задание 1

Даны три числа A, B, C. Найти сумму двух наибольших из них.

Задание 2

z={a+bex+cos⁡x,x<2.3,a+bx+1,2.3≤x<5,ex+sin⁡x,x≥5.z=\begin{cases}\dfrac{a+b}{e^x+\cos x},&x<2.3,\\\dfrac{a+b}{x+1},&2.3\le x<5,\\e^x+\sin x,&x\ge5.\end{cases}

Вариант 2

Задание 1

Даны три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Вывести новые значения переменных A, B, C.

Задание 2

y={at2,t<3,at3−bt,3≤t≤7,t,t>7.y=\begin{cases}at^2,&t<3,\\at^3-bt,&3\le t\le7,\\t,&t>7.\end{cases}

Вариант 3

Задание 1

Даны три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию или убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное. Вывести новые значения переменных A, B, C

Задание 2

y={aesin⁡x+2.5,x<0.3,sin⁡xa+ex,x>0.3,ecos⁡x+a,x=0.3.y=\begin{cases}ae^{\sin x}+2.5,&x<0.3,\\\dfrac{\sin x}{a+e^x},&x>0.3,\\e^{\cos x}+a,&x=0.3.\end{cases}

Вариант 4

Задание 1

Даны три целых числа A, B, C, одно из которых отлично от двух других, равных между собой. Определить порядковый номер числа, отличного от остальных.

Задание 2

z={ai+b/i,i<5,ai2+b,5≤i≤10,i3,i>10.z=\begin{cases}ai+b/i,&i<5,\\ai^2+b,&5\le i\le10,\\i^3,&i>10.\end{cases}

Вариант 5

Задание 1

Даны четыре целых числа A, B, C, D, одно из которых отлично от трех других, равных между собой. Определить порядковый номер числа, отличного от остальных.

Задание 2

z={at2+bsin⁡t+1,t<0.1,at+b,t=0.1,at2+bcos⁡t+1,t>0.1.z=\begin{cases}at^2+b\sin t+1,&t<0.1,\\at+b,&t=0.1,\\\sqrt{at^2+b\cos t+1},&t>0.1.\end{cases}

Вариант 6

Задание 1

На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту точку и ее расстояние от точки A.

При одинаковом расстоянии выведите обе точки и общее расстояние.

Задание 2

f={at2−bt−1,t≤1,a−b,1<t≤2,a(t3)2−bt+13,t>2.f=\begin{cases}at^2-b\sqrt{t-1},&t\le1,\\a-b,&1<t\le2,\\a(\sqrt[3]t)^2-b\sqrt[3]{t+1},&t>2.\end{cases}

Вариант 7

Задание 1

Даны целочисленные координаты точки на плоскости. Если точка совпадает с началом координат, то вывести 0. Если точка не совпадает с началом координат, но лежит на оси OX или OY, то вывести соответственно 1 или 2. Если точка не лежит на координатных осях, то вывести 3.

Задание 2

s={ax3/2+b(x3)2+c,x<0.2,ax5,0.2≤x≤1,(ax3/2+bx2/3)c,x>1.s=\begin{cases}ax^{3/2}+b(\sqrt[3]x)^2+c,&x<0.2,\\ax^5,&0.2\le x\le1,\\(ax^{3/2}+bx^{2/3})c,&x>1.\end{cases}

Вариант 8

Задание 1

Даны координаты точки, не лежащей на координатных осях OX и OY. Определить номер координатной четверти, в которой находится данная точка.

Задание 2

z={ln⁡(bx)−1bx+1,x<1.3,bx+1,1.3≤x≤1.7,ln⁡(bx)+1bx+1,x>1.7.z=\begin{cases}\ln(bx)-\dfrac1{bx+1},&x<1.3,\\bx+1,&1.3\le x\le1.7,\\\ln(bx)+\dfrac1{bx+1},&x>1.7.\end{cases}

Вариант 9

Задание 1

Даны целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным осям. Найти координаты его четвертой вершины.

Задание 2

y={ai4+bi,i<10,tan⁡(i+0.5),i=10,e2i+a2+i3,i>10.y=\begin{cases}ai^4+bi,&i<10,\\\tan(i+0.5),&i=10,\\e^{2i}+\sqrt{a^2+i^3},&i>10.\end{cases}

Вариант 10

Задание 1

Для данного вещественного x найти значение следующей функции f, принимающей вещественные значения:

f(x)={2sin⁡x,x>0,6−x,x≤0,f(x)=\begin{cases}2\sin x,&x>0,\\6-x,&x\le0,\end{cases}

Задание 2

s={sin⁡(cos⁡(ax)),x>1,tan⁡(ax),x=1,ax,x<1.s=\begin{cases}\sin(\cos(ax)),&x>1,\\\tan(ax),&x=1,\\ax,&x<1.\end{cases}

Вариант 11

Задание 1

Для данного целого x найти значение следующей функции f, принимающей значения целого типа:

f(x)={2x,x<−2 ∨ x>2,−3x,−2≤x≤2,f(x)=\begin{cases}2x,&x<-2\ \lor\ x>2,\\-3x,&-2\le x\le2,\end{cases}

Задание 2

s={e−xcos⁡(ax),x<a,sin⁡(ax),x=a,e−xsin⁡(ax),x>a.s=\begin{cases}e^{-\sqrt{x}}\cos(ax),&x<a,\\\sin(ax),&x=a,\\e^{-\sqrt{x}}\sin(ax),&x>a.\end{cases}

Вариант 12

Задание 1

Для данного вещественного x найти значение следующей функции f, принимающей вещественные значения:

f(x)={−x,x≤0,x2,0<x<2,4,x≥2,f(x)=\begin{cases}-x,&x\le0,\\x^2,&0<x<2,\\4,&x\ge2,\end{cases}

Задание 2

y={e−bxsin⁡(bx),x<a,cos⁡(ax),a≤x≤b,e−axcos⁡(bx),x>b,a≤by=\begin{cases}e^{-bx}\sin(bx),&x<a,\\\cos(ax),&a\le x\le b,\\e^{-ax}\cos(bx),&x>b,\end{cases}\qquad a\le b

Вариант 13

Задание 1

Для данного вещественного x найти значение следующей функции f, принимающей значения целого типа:

f(x)={0,x<0,1,x∈[2k,2k+1),−1,x∈[2k+1,2k+2),k=0,1,2,…f(x)=\begin{cases}0,&x<0,\\1,&x\in[2k,2k+1),\\-1,&x\in[2k+1,2k+2),\end{cases}\quad k=0,1,2,\ldots

Задание 2

z={ln⁡3x+x2x+1,x<0.5,x+1+1/x,x=0.5,cos⁡x+tsin⁡2x,x>0.5.z=\begin{cases}\dfrac{\ln^3x+x^2}{\sqrt{x+1}},&x<0.5,\\\sqrt{x+1}+1/x,&x=0.5,\\\cos x+t\sin^2x,&x>0.5.\end{cases}

Вариант 14

Задание 1

Дан номер года (положительное целое число). Определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный — 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 — являются).

Задание 2

f={ax−log⁡10(ax),ax<1,1,ax=1,ax+log⁡10(ax),ax>1.f=\begin{cases}ax-\log_{10}(ax),&ax<1,\\1,&ax=1,\\ax+\log_{10}(ax),&ax>1.\end{cases}

Вариант 15

Задание 1

Дано целое число, лежащее в диапазоне 1–999. Вывести его строку описание вида «четное двузначное число», «нечетное трехзначное число» и т. д.

Задание 2

s={tt−a3,t>a,tsin⁡(at),t=a,e−atcos⁡(at),t<a.s=\begin{cases}t\sqrt[3]{t-a},&t>a,\\t\sin(at),&t=a,\\e^{-at}\cos(at),&t<a.\end{cases}

Вариант 16+ · Доставка по тарифу

Расчёт с альтернативами

Введите массу посылки от 0 до 20 кг, расстояние от 0 до 1000 км и признак срочности. Положительная масса до 1 кг включительно стоит 200, до 5 кг — 400, иначе 800. До 100 км включительно доплаты нет, дальше прибавьте 150. Срочность увеличивает всю стоимость на 30%. Нулевую массу отклоните.

Проверки+

Выведите отдельно базовую стоимость, доплаты и итог. Подготовьте тесты точно на всех границах и с обеими срочностями. Циклы не обязательны.

Вариант 17+ · Полный разбор уравнения

Квадратное или линейное

Решите уравнение для целых коэффициентов по модулю до 1000. Учтите один и два действительных корня, отсутствие корней, линейное уравнение, тождество и противоречие.

ax2+bx+c=0,D=b2−4acax^2+bx+c=0,\quad D=b^2-4ac

Проверки+

Подставьте найденные корни в левую часть и выведите остатки. Для каждого типа ответа нужен отдельный тест.

Вариант 18+ · Точка и две окружности

Классификация

По точке и двум окружностям определите для каждой: внутри, на границе или снаружи. Радиусы положительные. Сравнивайте квадрат расстояния с квадратом радиуса; равенство определяйте с допуском 10^-9.

q=(x−x0)2+(y−y0)2−r2q=(x-x_0)^2+(y-y_0)^2-r^2

Проверки+

Выведите общий итог: внутри обеих, только первой, только второй или ни одной. Граница считается принадлежностью кругу.

Вариант 19+ · Календарная дата

Проверка

Введите день, месяц и год от 1 до 9999. Проверьте существование даты с учётом високосности. Число дней месяца получите через switch и условия.

Следующий день+

Для допустимой даты определите следующую. После 31.12.9999 выведите «вне диапазона». Не используйте массивы или календарные библиотеки.

Вариант 20+ · Кусочная функция с областью определения

Вычисление

Введите x и ненулевой параметр a. Выберите формулу и отдельно проверьте область определения выбранной ветви.

f(x)={ln⁡(−x)/a,x<0,a,x=0,x+ax−a,x>0.f(x)=\begin{cases}\ln(-x)/a,&x<0,\\\sqrt{a},&x=0,\\\dfrac{x+a}{x-a},&x>0.\end{cases}

Проверки+

Различайте неверный параметр и недопустимый аргумент выбранной ветви. Не проверяйте ограничения неисполняемых ветвей как запрет для всей функции.

Возможные вопросы к защите

Попробуйте ответить своими словами и показать соответствующее место в своей программе. Под вопросом можно открыть ориентир для ответа и перейти к нужной теме лекции.

Когда нужны независимые if, а когда цепочка if / else if / else?

Покажите, могут ли выполниться несколько ветвей на одном наборе данных.

Повторить: Лекция 2 · ветвления

Как записать попадание числа в интервал?

Объясните запись left <= x && x <= right и отличие от математической цепочки сравнений.

Повторить: Лекция 2 · ветвления · Лекция 3 · выражения

Что такое короткое замыкание && и ||?

Приведите проверку, которая защищает следующее выражение от недопустимого вычисления.

Повторить: Лекция 3 · операторы

Почему проверка ровно на границе обязательна?

Сравните < и <= и покажите вход, который обнаружит ошибку выбора знака.

Повторить: Лекция 2 · ветвления

Чем покрытие решений отличается от покрытия условий?

Для составного условия подберите тесты на результат всего решения и на значения его частей.

Повторить: Лекция 5 · практика диагностики

Когда можно применить switch и зачем нужен break?

Объясните выбор по дискретному значению и переход к следующей ветви без break.

Повторить: Лекция 2 · ветвления