Содержание
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Цель лабораторной работы
Разработка программ на языке С++ с использованием функций, определенных пользователем.
Задание №1
Варианты заданий
💡 Для создаваемой функции: подобрать имя; указать тип функции; выбрать имена и типы входных параметров; описать тело функции с обязательным оператором в конце; в главной программе вызвать созданную функцию два раза с различными входными данными. Вывести результаты в главной программе.
№ | Условие |
1 | Создать функцию, которая возвращает меньшее из двух данных чисел. |
2 | Создать функцию, которая переводит время, заданное в минутах в секунды. |
3 | Создать функцию, которая определяет периметр треугольника по трем сторонам. |
4 | Создать функцию, которая возвращает номер квадранта, в котором находится точка. |
5 | Создать функцию, которая возвращает среднее арифметическое трех данных чисел. |
6 | Создать функцию, которая определяет площадь круга по его радиусу. |
7 | Создать функцию, которая возвращает остаток от деления двух натуральных чисел. |
8 | Создать функцию, которая переводит радианы в градусы. |
9 | Создать функцию, которая определяет длину отрезка по его координатам. |
10 | Создать функцию, которая возвращает в долларах сумму, заданную в рублях. |
11 | Создать функцию, которая возвращает большее из двух данных чисел. |
12 | Создать функцию, которая определяет длину окружности по заданному радиусу. |
13 | Создать функцию, которая переводит скорость из $\frac{км}{час}$ в $\frac{м}{сек}$. |
14 | Создать функцию, которая возвращает среднее геометрическое двух данных чисел. |
15 | Создать функцию, которая возвращает в рублях сумму, заданную в долларах. |
16 | Создать функцию, которая переводит градусы в радианы. |
17 | Создать функцию, которая переводит время, заданное в секундах в минуты. |
Образец выполнения (вариант №11)
Условие задачи
Создать функцию, которая возвращает большее из двух данных чисел.
Реализация задачи на языке С++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | // для консольного ввода-вывода #include <iostream> // подключаем стандартное пространство имен using namespace std; // функция, возвращающая большее из двух данных чисел double Get_max_value( const double a, const double b ) { // принимаем изначально за максимальное значение параметра a double max = a; // если b больше текущего максимального, то if ( max < b ) // запоминаем новое максимальное значение (параметр b) max = b; // в качестве ответа возвращаем максимальное из двух заданных чисел a и b return max; } // главная функция программы (точка входа) int main( void ) { // русификация диалогов программы setlocale( LC_ALL, "" ); // объявляем переменных для хранения входных 2 чисел double a, b; // проводим тест №1 cout << "Тест №1. \nВведите 2 числа (через пробел): "; cin >> a >> b; cout << "Максимальное из введенных чисел: " << Get_max_value( a, b ) << endl << endl; // проводим тест №2 cout << "Тест №2. \nВведите 2 числа (через пробел): "; cin >> a >> b; cout << "Максимальное из введенных чисел: " << Get_max_value( a, b ) << endl << endl; // задержка программы, чтобы у пользователя была возможность просмотреть результат system( "pause" ); // в качестве ответа возвращаем код = 0 (успешное окончание работы всей программы) return EXIT_SUCCESS; } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Задание №2
Варианты заданий
💡 Реализовать функцию, которую необходимо вызвать $2$ раза.
№ | Условие |
1 | Функция вычисляет площадь параллелограмма $s = a \cdot b \cdot \sin( \alpha )$ по заданным двум сторонам и углу между ними. В главной программе задано два параллелограмма. |
2 | Функция вычисляет площадь квадрата по заданной стороне. В главной программе задано два квадрата. Найти их площади. |
3 | Функция вычисляет диагональ прямоугольника по заданным двум сторонам. В главной программе задано два прямоугольника. Найти их диагонали. |
4 | Функция вычисляет площадь $s = \frac{1}{2} \cdot (a + b) \cdot h$ равнобедренной трапеции по заданным двум основаниям $a,\ b$ и высоте $h$. В главной программе заданы две равнобедренные трапеции. Найти их площади. |
5 | Функция вычисляет площадь окружности по заданному радиусу $R$. В главной программе заданы две окружности. Найти их площади. |
6 | Функция вычисляет объем сферы $v = \frac{4}{3} \cdot \pi \cdot R^3$ по заданному радиусу $R$. В главной программе заданы две сферы. Найти их объемы. |
7 | Функция вычисляет объем квадратной призмы по заданной высоте $H$ и стороне основания $a$. В главной программе задано две квадратные призмы. Найти их объемы. |
8 | Функция вычисляет объем правильной треугольной призмы по заданной высоте $H$ и стороне основания $a$. В главной программе заданы две треугольные призмы. Найти их объемы. |
9 | Функция вычисляет объем цилиндра по заданной высоте $H$ и радиусу основания $R$. В главной программе заданы два цилиндра. Найти их объемы. |
10 | Функция вычисляет площадь боковой поверхности $S = \pi \cdot R \cdot \sqrt{R^2 + H^2}$ конуса по заданной высоте $H$ и радиусу основания $R$. В главной программе задано два конуса. Найти их площади боковых поверхностей. |
11 | Функция вычисляет объем $v = \frac{1}{3} \cdot H \cdot \pi \cdot R^2$ конуса по заданной высоте $H$ и радиусу основания $R$. В главной программе задано два конуса. Найти их объемы. |
12 | Функция вычисляет объем $v = \frac{1}{3} \cdot H \cdot \pi \cdot (R^2 + r^2 + r \cdot R)$ усеченного конуса по заданной высоте $H$ и двум радиусам оснований $R$ и $r$. В главной программе задано два конуса. Найти их объемы. |
13 | Функция вычисляет длину вектора на плоскости по заданным координатам $x$ и $y$. В главной программе задано два вектора. Найти их длины. |
14 | Функция вычисляет тангенс угла наклона (между осью $OX$ и вектором) вектора на плоскости по заданным координатам $x$ и $y$. В главной программе задано два вектора. Найти их углы. |
15 | Функция вычисляет расстояние до начала координат от точки на плоскости по заданным ее координатам $x$ и $y$. В главной программе заданы две точки. Найти их расстояния до начала координат. |
Образец выполнения (вариант №2)
Условие задачи
Функция вычисляет площадь квадрата по заданной стороне. В главной программе задано два квадрата. Найти их площади.
Реализация задачи на языке С++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | // для консольного ввода-вывода #include <iostream> // для форматированного вывода #include <iomanip> // подключаем стандартное пространство имен using namespace std; // функция, возвращающая площадь квадрата по заданной стороне double Get_square( const double a ) { // в качестве ответа возвращаем площадь квадрата return ( a * a ); } // главная функция программы (точка входа) int main( void ) { // русификация диалогов программы setlocale( LC_ALL, "" ); // объявляем переменную для хранения стороны квадрата double a; // все числа будем выводить с точностью до 3 знаков в дробной части cout << setprecision( 3 ) << fixed; // проводим тест №1 cout << "Тест №1. \nВведите сторону квадрата: "; cin >> a; cout << "Площадь квадрата (a = " << a << "): " << fixed << Get_square( a ) << endl << endl; // проводим тест №2 cout << "Тест №2. \nВведите сторону квадрата: "; cin >> a; cout << "Площадь квадрата (a = " << a << "): " << fixed << Get_square( a ) << endl << endl; // задержка программы, чтобы у пользователя была возможность просмотреть результат system( "pause" ); // в качестве ответа возвращаем код = 0 (успешное окончание работы всей программы) return EXIT_SUCCESS; } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Задание №3
Варианты заданий
№ | Условие |
1 | Описать функцию Sign(X) целого типа, возвращающую для вещественного числа $X$ его знак, то есть следующие значения: $-1$, если $X < 0$; $0$, если $X = 0$; $1$, если $X > 0$. С помощью этой функции найти значение выражения Sign(A) + Sign(B) для данных вещественных чисел $A$ и $B$. |
2 | Описать функцию RootsCount(A, B, C) целого типа, определяющую количество корней квадратного уравнения $A \cdot x^2 + B \cdot x + C = 0$ ($A,\ B,\ C$ — вещественные параметры, $A \neq 0$). С ее помощью найти количество корней для каждого из трех квадратных уравнений с данными коэффициентами. Количество корней определять по значению дискриминанта: $D = B^2 — 4 \cdot A \cdot C$. |
3 | Описать функцию CircleS(R) вещественного типа, находящую площадь круга радиуса $R$ ($R$ — вещественное). С помощью этой функции найти площади трех кругов с данными радиусами. Площадь круга радиуса $R$ вычисляется по формуле $S = \pi \cdot R^2$. В качестве значения $\pi$ использовать $3.14$. |
4 | Описать функцию RingS(R1, R2) вещественного типа, находящую площадь кольца, заключенного между двумя окружностями с общим центром и радиусами $R_1$ и $R_2$ ($R_1,\ R_2$ — вещественные, $R_1 > R_2$). С ее помощью найти площади трех колец, для которых даны внешние и внутренние радиусы. Воспользоваться формулой площади круга радиуса $R$: $S = \pi \cdot R^2$. В качестве значения $\pi$ использовать $3.14$. |
5 | Описать функцию TriangleP(a, h), находящую параметр равнобедренного треугольника по его основанию $a$ и высоте $h$, проведенной к основанию ($a,\ h$ — вещественные). С помощью этой функции найти периметры трех треугольников, для которых даны основания и высоты. Для нахождения боковой стороны $b$ треугольника использовать теорему Пифагора: $b^2 = (\frac{a}{2})^2 + h^2$. |
6 | Описать функцию Calc(A, B, Op) вещественного типа, выполняющую над ненулевыми вещественными числами $A$ и $B$ одну из арифметических операций и возвращающую ее результат. Вид операции определяется целым параметром $Op$: $1$ — вычитание, $2$ — умножение, $3$ — деление, остальные значения — сложение. С помощью Calc выполнить для данных $A$ и $B$ операции, определяемые данными целыми $N_1,\ N_2,\ N_3$. |
7 | Описать функцию Quarter(x, y) целого типа, определяющую номер координатной четверти, в которой находится находится точка с ненулевыми вещественными координатами $(x,\ y)$. С помощью этой функции найти номера координатных четвертей для трех точек с данными ненулевыми координатами. |
8 | Вычисление скалярного произведения векторов (массивов) оформить в виде функции $(x,\ y)$ — скалярное произведение векторов — это сумма поэлементных произведений их компонент. В главной программе заданы два вектора (массива) $x = (x_1,\ x_2,\ x_3,\ x_4)$ и $y = (y_1,\ y_2,\ y_3,\ y_4)$. Определить косинус угла $\alpha$ между векторами $x$ и $y$ по формуле: $\cos(\alpha) = \frac{(x,\ y)}{\sqrt{(x,\ x) (y,\ y)}}$, где $(x,\ y) = x_1 y_1 + x_2 y_2 + … + x_n y_n$ — скалярное произведение векторов (сумма поэлементных произведений компонент), используя описанную функцию $3$ раза. |
9 | Даны длины сторон треугольника $a,\ b,\ c$. Найти медианы треугольника, сторонами которого являются медианы исходного треугольника. Для вычисления медианы проведенной к стороне $a$ использовать формулу $\frac{1}{2} \sqrt{2b^2 + 2c^2 — a^2}$. Вычисление медианы оформить в виде функции. |
10 | Описать функцию DegToRad(D) вещественного типа, находящую величину угла в радианах, если дана его величина $D$ в градусах ($D$ — вещественное число, $0 < D < 360$). Воспользоваться следующим соотношением: $180^\circ = \pi$ радианов. В качестве значения $\pi$ использовать $3.14$. С помощью функции DegToRad перевести из градусов в радианы пять данных углов. |
11 | Описать функцию RadToDeg(R) вещественного типа, находящую величину угла в градусах, если дана его величина $R$ в радианах ($R$ — вещественное число, $0 < R < 2\pi$. Воспользоваться следующим соотношением: $180^\circ = \pi$ радианов. В качестве значения $\pi$ использовать $3.14$. С помощью функции RadToDeg перевести из радианов в градусы пять данных углов. |
12 | Четыре точки заданы своими координатами X($x_1,\ x_2$), Y($y_1,\ y_2$), Z($z_1,\ z_2$), P($p_1,\ p_2$). Выяснить, какие из них находятся на максимальном расстоянии друг от друга и вывести на печать значение этого расстояния. Вычисление расстояния между двумя точками оформить в виде функции. |
13 | Четыре точки заданы своими координатами X($x_1,\ x_2,\ x_3$), Y($y_1,\ y_2,\ y_3$), Z($z_1,\ z_2,\ z_3$), T($t_1,\ t_2,\ t_3$). Выяснить, какие из них находятся на минимальном расстоянии друг от друга и вывести на печать значение этого расстояния. Вычисление расстояния между двумя точками оформить в виде функции. |
14 | Описать функцию Power2(A, N) вещественного типа, находящую величину $A^N$ ($A$ — вещественный, $N$ — целый параметр) по следующим формулам: $A^0 = 1$ С помощью этой функции найти $A^K$, $A^L$, $A^M$, если даны числа $A,\ K,\ L,\ M$. |
Образец выполнения (вариант №3)
Условие задачи
Описать функцию CircleS(R) вещественного типа, находящую площадь круга радиуса $R$ ($R$ — вещественное). С помощью этой функции найти площади трех кругов с данными радиусами. Площадь круга радиуса $R$ вычисляется по формуле $S = \pi \cdot R^2$. В качестве значения $\pi$ использовать $3.14$.
Реализация задачи на языке С++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | // для консольного ввода-вывода #include <iostream> // для форматированного вывода #include <iomanip> // подключаем стандартное пространство имен using namespace std; // функция, возвращающая площадь круга радиуса R double CircleS( const double R ) { // имитация константы Пи const double PI = 3.14; // в качестве ответа возвращаем площадь круга return ( PI * R * R ); } // главная функция программы (точка входа) int main( void ) { // русификация диалогов программы setlocale( LC_ALL, "" ); // объявляем переменную для хранения радиуса круга double R; // все числа будем выводить с точностью до 3 знаков в дробной части cout << setprecision( 3 ) << fixed; // проводим тест №1 cout << "Тест №1. \nВведите радиус круга: "; cin >> R; cout << "Площадь круга (R = " << R << "): " << CircleS( R ) << endl << endl; // проводим тест №2 cout << "Тест №2. \nВведите радиус круга: "; cin >> R; cout << "Площадь круга (R = " << R << "): " << CircleS( R ) << endl << endl; // проводим тест №3 cout << "Тест №3. \nВведите радиус круга: "; cin >> R; cout << "Площадь круга (R = " << R << "): " << CircleS( R ) << endl << endl; // задержка программы, чтобы у пользователя была возможность просмотреть результат system( "pause" ); // в качестве ответа возвращаем код = 0 (успешное окончание работы всей программы) return EXIT_SUCCESS; } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Задание №4
Варианты заданий
№ | Условие |
1 | Даны действительные числа $a,\ b,\ c$. Получить: $\frac{max(a,\ a\ +\ b)\ +\ max(a,\ b\ +\ c)}{1\ +\ max(a\ +\ b \cdot c,\ b \cdot 15)}$. Описать функцию нахождения наибольшего числа из $2$ заданных величин. |
2 | Описать функцию Power1(A, B) вещественного типа, находящую величину $A^B$ по формуле $\exp(B \cdot \ln(A))$ (параметры $A,\ B$ — вещественные). В случае нулевого или отрицательного параметра $A$ функция должна возвращать $0$. С помощью этой функции в главной программе найти степени $A^P,\ B^P,\ C^P$, если даны числа $P,\ A,\ B,\ C$. |
3 | Даны действительные числа $a,\ b$. Получить $u = min(a,\ b — a),\ y = min(a \cdot b,\ a + b), k = min(u + y^2,\ 3.14)$. Описать функцию нахождения минимального числа из $2$ заданных величин. |
4 | Даны действительные числа $s,\ t$. Получить: $ g(1.2,\ s)\ +\ g(t,\ s)\ -\ g(2 \cdot s\ -\ 1,\ 5 \cdot t$), где $ g(a,\ b) = \frac{a^2\ +\ b^2}{a^2\ +\ 2ab\ +\ 3b^2\ + 4}$ — функция. |
5 | Даны действительные числа $x,\ y$. Получить: $ f(x,\ -2y,\ 1.17)\ +\ f(2.2\ x,\ x — y )$, где $ f(a,\ b,\ c) = \frac{2a\ -\ b\ -\ \sin(c)}{5\ +\ |c|}$ — функция. |
6 | Даны натуральные числа $a,\ b,\ c$. Найти НОД(a, b, c), используя формулу: НОД(a, b, c) = НОД((a, b), c). Алгоритм Евклида: НОД(A, B) = НОД(B, A mod B), если $B \neq 0$; НОД(A, 0) = A. Описать функцию НОД(A, B), используя цикл while. |
7 | Получить для $x = 1, 3, 4, 5$ все значения выражения $ Q(x) = p(x + 1) — p(x)$ вывести на экран, где $ p(y) = a_3 \cdot y^3 + a_2 \cdot y^2 + a_1 \cdot y + a_0$ — функция, где $a_3,\ a_2,\ a_1,\ a_0$ — определенные константы. |
8 | Даны действительные числа $x,\ y$. Получить: $ Q = \tan(f(x + y,\ xy,\ y\ -\ x)\ +\ f(3.1,\ 1.4,\ y\ -\ \sin(x) )$, где $ f(a,\ b,\ c) = \frac{3b\ +\ c\ -\ e^{-a}}{1\ +\ |\cos(3\alpha)|}$ — функция. |
9 | Даны действительные числа $a,\ b$. Получить $u = min(a,\ b \cdot a),\ y = min(a — b,\ a + b), k = min(u^3 + y^3,\ 28)$. Описать функцию нахождения минимального числа из $2$ заданных величин. |
10 | Даны действительные числа $a,\ b$. Получить $r = max(a,\ b + a),\ d = max(a \cdot b,\ a + b), s = max(r + d^2,\ 3.14)$. Описать функцию нахождения наибольшего числа из $2$ заданных величин. |
11 | Даны действительные числа $a_0,\ a_1,\ a_2,\ a_3$. Получить для $x = 2, 4, 7$ значения $ Q(x) = p(x + 1) + p(x)$, где $ p(y) = a_3 \cdot y^2 + a_2 \cdot y + 2(a_1 + a_0))$ — функция. |
12 | Даны действительные числа $s,\ t$. Получить: $ Q = |g(\ln(s,\ t + 1)) -\ g(t,\ s)|$, где $ g(a,\ b) = \frac{a^2\ +\ b^2}{a^2\ +\ 2ab\ +\ 3b^2\ + 4}$ — функция. |
13 | Даны натуральные числа $a,\ b,\ c$. Найти НОД(a, b, c), используя формулу: НОД(a, b, c) = НОД((a, b), c). Алгоритм Евклида: НОД(A, B) = НОД(B, A mod B), если $B \neq 0$; НОД(A, 0) = A. Описать функцию НОД(A, B), используя цикл while. |
14 | Три точки заданы своими координатами $ X(x_1,\ x_2),\ Y(y_1,\ y_2),\ Z(z_1,\ z_2)$. Найти и напечатать координаты точки, для которой угол между осью абсцисс и лучом, соединяющим начало координат с точкой, минимальный. Вычисление угла оформить в виде функции по формуле $\alpha = \arctan(\frac{y}{x})$. Вызвать функцию в программе $3$ раза. |
Образец выполнения (вариант №10)
Условие задачи
Даны действительные числа $a,\ b$. Получить $r = max(a,\ b + a),\ d = max(a \cdot b,\ a + b), s = max(r + d^2,\ 3.14)$. Описать функцию нахождения наибольшего числа из $2$ заданных величин.
Реализация задачи на языке С++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | // для консольного ввода-вывода #include <iostream> // для форматированного вывода на экран #include <iomanip> // подключаем стандартное пространство имен using namespace std; // функция, возвращающая большее из двух данных чисел double max( const double a, const double b ) { // принимаем изначально за максимальное значение параметра a double max = a; // если b больше текущего максимального, то if ( max < b ) // запоминаем новое максимальное значение (параметр b) max = b; // в качестве ответа возвращаем максимальное из двух заданных чисел a и b return max; } // главная функция программы (точка входа) int main( void ) { // русификация диалогов программы setlocale( LC_ALL, "" ); // объявляем переменных для хранения входных 2 чисел double a, b; // объявляем переменные для хранения результатов вычислений double r, d, s; // вводим с клавиатуры значения переменных a, b cout << "Введите 2 числа (через пробел): "; cin >> a >> b; // вычисляем последовательно значения переменных r, d, s r = max( a, b + a ); d = max( a * b, a + b ); s = max( r + d * d, 3.14 ); // все числа будем выводить с точностью до 3 знаков в дробной части cout << setprecision( 3 ) << fixed; // выводим результаты на экран cout << "\tзначение переменной r: " << r << endl; cout << "\tзначение переменной d: " << d << endl; cout << "\tзначение переменной s: " << s << endl; // задержка программы, чтобы у пользователя была возможность просмотреть результат cout << endl << endl; system( "pause" ); // в качестве ответа возвращаем код = 0 (успешное окончание работы всей программы) return EXIT_SUCCESS; } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Добавить комментарий