Лабораторная работа №1. Первые программы: ввод, вычисления и управляющие конструкции
Цель занятия: закрепить ввод и вывод, выбор типов данных, ветвления, циклы и математические функции на небольших программах.
Необходимые темы и конструкции C++:
std::cin,std::cout,std::print- целые и вещественные типы, арифметические и логические операции
if,switch, условная операция- циклы
for,while,do while - функции из
<cmath>,assert
Структура проекта
Разместите решение в следующих файлах:
main.cpp
Общие требования
- Каждое задание оформите как отдельную небольшую программу с одной функцией
main. - Проверяйте допустимость входных данных до выполнения вычислений.
- Не используйте массивы, строки и пользовательские функции: эти темы будут изучены позднее.
Основные задания
-
Расстояние между точками
Считать координаты двух точек на плоскости и вычислить расстояние между ними:
\[ d=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}. \]Вывести результат с тремя знаками после десятичной точки.
Требования:
- Используйте
std::sqrt; не вычисляйте квадрат черезstd::pow.
Входные данные / вызов Результат 0 0 3 45.000 - Используйте
-
Кусочно заданная функция
Для введённого вещественного числа \(x\) вычислить значение функции
\[ f(x)=\begin{cases}x^2+1,&x<-1,\\2x,&-1\le x\le 2,\\x-3,&x>2.\end{cases} \]Требования:
- Граничные значения
-1и2должны попадать во вторую ветвь.
Входные данные / вызов Результат -1-23.50.5 - Граничные значения
-
Статистика цифр
Для неотрицательного целого числа найти количество цифр, сумму цифр и наибольшую цифру.
Требования:
- Число
0считать одноразрядным. - Используйте цикл
while; не преобразовывайте число в строку.
Входные данные / вызов Результат 50730Количество: 5 Сумма: 15 Максимум: 70Количество: 1 Сумма: 0 Максимум: 0 - Число
Домашнее задание
-
Квадратное уравнение
По коэффициентам \(a\), \(b\), \(c\) решить уравнение \(ax^2+bx+c=0\). Учесть линейный случай, отсутствие действительных корней и бесконечное множество решений.
Требования:
- Не вычисляйте квадратный корень из отрицательного числа.
- Два корня выведите по возрастанию.
Входные данные / вызов Результат 1 -3 21 20 0 0Бесконечно много решений -
Следующая календарная дата
Считать день, месяц и год, проверить корректность даты и вывести дату следующего дня. Используйте григорианское правило високосного года.
Требования:
- Год високосный, если он делится на \(400\), либо делится на \(4\), но не на \(100\).
Входные данные / вызов Результат 28 2 202429.02.202431 12 202501.01.2026 -
Рост вклада
По начальной сумме \(S\), годовому проценту \(p\) и целевой сумме \(T\) определить минимальное число полных месяцев, после которых вклад достигнет цели. В конце каждого месяца сумма умножается на \(1+\frac{p}{1200}\).
Требования:
- Проверьте, что исходная сумма и цель положительны, процент неотрицателен, а достижение цели возможно.
- Используйте цикл
while.
Входные данные / вызов Результат 10000 12 103003