Добавлен: 03.12.2023
Просмотров: 65
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Задача 12. Функции
1. Описать функцию Mean, вычисляющую среднее арифметическое и среднее геометрическое двух положительных чисел.
2. Описать функцию CircleS, находящую площадь круга радиуса R.
3. Описать функцию TrianglePS, вычисляющую по стороне a равностороннего треугольника его периметр P = 3·a и площадь
4
/
3 2
a
S
4. Описать функцию RingS, находящую площадь кольца, заключенного между двумя окружно- стями с общим центром и радиусами R1 и R2.
5. Описать функцию RectPS, вычисляющую периметр P и площадь S прямоугольника со сторо- нами, параллельными осям координат, по координатам (x1, y1), (x2, y2) его противоположных вершин.
6. Описать функцию TriangleP, находящую периметр равнобедренного треугольника по его ос- нованию a и высоте h, проведенной к основанию. Для нахождения боковой стороны b тре- угольника использовать теорему Пифагора:
2 2
2
)
2
/
(
h a
b
7. Описать функцию InvertDigits, меняющую порядок следования цифр целого положительного числа K на обратный.
8. Описать функцию SumRange, находящую сумму всех целых чисел от A до B включительно.
Если A > B, то функция возвращает 0.
9. Определить функцию PTrap для расчета периметра равнобедренной трапеции по ее основа- нию и высоте. Задать основания и высоты двух равнобедренны трапеций. Найти сумму их периметров.
10. Описать функцию Quarter, определяющую номер координатной четверти, в которой находит- ся точка с ненулевыми вещественными координатами (x, y).
11. Описать функцию DigitCountSum, находящую количество цифр целого положительного чис- ла, а также их сумму.
12. Описать функцию Calc, выполняющую над ненулевыми вещественными числами A и B одну из арифметических операций и возвращающую ее результат. Вид операции определяется це- лым параметром: 1 – вычитание, 2 – умножение, 3 – деление, остальные значения – сложение.
13. Написать программу определения периметра треугольника, заданного координатами его вершин. Длину стороны определять с помощью функции.
14. Описать функцию DegToRad, находящую величину угла в радианах, если дана его величина
D в градусах (D – вещественное число, 0 < D < 360). Воспользоваться следующим соотноше- нием: 180° = π радианов.
15. Описать функцию IsLeapYear, определяющую, является заданный год високосным. Високос- ным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400.
Задача 13. Рекурсия
1. Описать рекурсивные функции Fact(N) и Fact2(N) вещественного типа, вычисляющие значе- ния факториала N! и двойного факториала N!! соответственно (N > 0 — параметр целого ти- па).
2. Описать рекурсивную функцию PowerN(x, n) вещественного типа, находящую значение n-й степени числа x по формуле: x
0
= 1, x n
= x·x n–1
при n > 0, x n
= 1 / x
–n при n < 0 (x >= 0 – вещест- венное число, n – целое).
3. Описать рекурсивную функцию SqrtK(x, k, n) вещественного типа, находящую приближенное значение корня k-й степени из числа x по формуле: y(0) = 1, y(n + 1) = y(n) – (y(n) – x / y k–1
(n)) / k, где y(n) обозначает SqrtK(x, k, n) (x – вещественный параметр, k и n – целые; x > 0, k > 1, n > 0).
4. Описать рекурсивную функцию FibRec(N) целого типа, вычисляющую N-е число Фибоначчи
F(N) по формуле: F(1) = F(2) = 1, F(k) = F(k–2) + F(k–1), k = 3, 4, ... С помощью этой функции найти пять чисел Фибоначчи с указанными номерами и вывести эти числа вместе с количест- вом рекурсивных вызовов функции FibRec, потребовавшихся для их нахождения.
5. Описать рекурсивную функцию C(m, n) целого типа, находящую число сочетаний из n эле- ментов по m, используя формулу: C(0, n) = C(n, n) = 1, C(m, n) = C(m, n–1) + C(m–1, n–1) при
0 < m < n (m и n — целые параметры; n > 0, 0 <= m <= n). Дано число N и пять различных зна- чений M. Вывести числа C(M, N) вместе с количеством рекурсивных вызовов функции C, по- требовавшихся для их нахождения.
6. Описать рекурсивную функцию NOD(A, B) целого типа, находящую наибольший общий де- литель двух натуральных чисел A и B, используя алгоритм Евклида:
NOD(A, B) = NOD(B mod A, A), если A <> 0; NOD(0, B) = B.
С помощью этой функции найти наибольшие общие делители пар A и B, A и C, A и D, если даны числа A, B, C, D.
7. Описать рекурсивную функцию MinRec(A, N) вещественного типа, которая находит мини- мальный элемент вещественного массива A размера N, не используя оператор цикла. С по- мощью функции MinRec найти минимальные элементы массивов A, B, C размера NA, NB, NC соответственно.
8. Описать рекурсивную функцию Digits(S) целого типа, находящую количество цифр в строке
S без использования оператора цикла. С помощью этой функции найти количество цифр в заданной строке.
9. Описать рекурсивную функцию Simm(S) логического типа, проверяющую, является ли сим- метричной строка S, без использования оператора цикла. С помощью этой функции прове- рить заданную строку.
10. Задано положительное и отрицательное число в двоичной системе. Составить программу вы- числения суммы этих чисел, используя функцию сложения чисел в двоичной системе счис- ления.
11. Описать рекурсивную функцию Root (а, b, ε), которая методом деления отрезка пополам на- ходит с точностью ε корень уравнения f(x) = 0 на отрезке [а, b] (считать, что ε > 0, а < b, f(a) – f(b) < 0 и f(x) — непрерывная и монотонная на отрезке [а, b] функция).
12. Описать функцию min(X) для определения минимального элемента линейного массива X, введя вспомогательную рекурсивную функцию minl(k), находящую минимум среди послед- них элементов массива X, начиная с k-го.
13. Описать рекурсивную логическую функцию Simm(S, I, J), проверяющую, является ли сим- метричной часть строки S, начинающаяся i-м и заканчивающаяся j-м ее элементами.
14. Составить программу для нахождения числа, которое образуется из данного натурального числа при записи его цифр в обратном порядке. Например, для числа 1234 получаем резуль- тат 4321.
15. Составить программу для перевода данного натурального числа в р-ичную систему счисле- ния (2 ≤ р ≤ 9).