Дополнительные задания на процедуры и функции
Proc37. Описать функцию Power1(A, B) вещественного типа, находящую вели-
чину A
B
по формуле A
B
= exp(B·ln(A)) (параметры A и B — вещественные).
В случае нулевого или отрицательного параметра A функция возвраща-
ет 0. С помощью этой функции найти степени A
P
, B
P
, C
P
, если даны
числа P, A, B, C.
Proc38. Описать функцию Power2(A, N) вещественного типа, находящую ве-
личину A
N
(A — вещественный, N — целый параметр) по следующим
формулам:
A
0
= 1;
A
N
= A·A·. . .·A (N сомножителей), если N > 0;
A
N
= 1/(A·A·. . .·A) (|N| сомножителей), если N < 0.
С помощью этой функции найти A
K
, A
L
, A
M
, если даны числа A, K, L, M.
Proc39. Используя функции Power1 и Power2 (задания Proc37 и Proc38), опи-
сать функцию Power3(A, B) вещественного типа с вещественными па-
раметрами, находящую A
B
следующим образом: если B имеет нулевую
дробную часть, то вызывается функция Power2(A, Round(B)); в против-
ном случае вызывается функция Power1(A, B). С помощью этой функции
найти A
P
, B
P
, C
P
, если даны числа P, A, B, C.
Proc40
◦
. Описать функцию Exp1(x, ε) вещественного типа (параметры x, ε
— вещественные, ε > 0), находящую приближенное значение функции
exp(x):
exp(x) = 1 + x + x
2
/(2!) + x
3
/(3!) + . . . + x
n
/(n!) + . . .
(n! = 1·2·. . .·n). В сумме учитывать все слагаемые, большие ε. С помощью
Exp1 найти приближенное значение экспоненты для данного x при шести
данных ε.
Proc41. Описать функцию Sin1(x, ε) вещественного типа (параметры x, ε —
вещественные, ε > 0), находящую приближенное значение функции sin(x):
38
М. Э. Абрамян. Электронный задачник Programming Taskbook 4.5
sin(x) = x − x
3
/(3!) + x
5
/(5!) − . . . + (−1)
n
·x
2·n+1
/((2·n+1)!) + . . . .
В сумме учитывать все слагаемые, модуль которых больше ε. С помо-
щью Sin1 найти приближенное значение синуса для данного x при шести
данных ε.
Proc42. Описать функцию Cos1(x, ε) вещественного типа (параметры x, ε —
вещественные, ε > 0), находящую приближенное значение функции cos(x):
cos(x) = 1 − x
2
/(2!) + x
4
/(4!) − . . . + (−1)
n
·x
2·n
/((2·n)!) + . . . .
В сумме учитывать все слагаемые, модуль которых больше ε. С помощью
Cos1 найти приближенное значение косинуса для данного x при шести
данных ε.
Proc43. Описать функцию Ln1(x, ε) вещественного типа (параметры x, ε —
вещественные, |x| < 1, ε > 0), находящую приближенное значение функции
ln(1 + x):
ln(1 + x) = x − x
2
/2 + x
3
/3 − . . . + (−1)
n
·x
n+1
/(n+1) + . . . .
В сумме учитывать все слагаемые, модуль которых больше ε. С помощью
Ln1 найти приближенное значение ln(1 + x) для данного x при шести
данных ε.
Proc44. Описать функцию Arctg1(x, ε) вещественного типа (параметры x, ε —
вещественные, |x| < 1, ε > 0), находящую приближенное значение функции
arctg(x):
arctg(x) = x − x
3
/3 + x
5
/5 − . . . + (−1)
n
·x
2·n+1
/(2·n+1) + . . . .
В сумме учитывать все слагаемые, модуль которых больше ε. С помощью
Arctg1 найти приближенное значение arctg(x) для данного x при шести
данных ε.
Proc45. Описать функцию Power4(x, a, ε) вещественного типа (параметры x,
a, ε — вещественные, |x| < 1; a, ε > 0), находящую приближенное значение
функции (1 + x)
a
:
(1 + x)
a
= 1 + a·x + a·(a−1)·x
2
/(2!) + . . . + a·(a−1)·. . .·(a−n+1)·x
n
/(n!) + . . . .
В сумме учитывать все слагаемые, модуль которых больше ε. С помощью
Power4 найти приближенное значение (1 + x)
a
для данных x и a при шести
данных ε.
Proc46. Описать функцию NOD2(A, B) целого типа, находящую наибольший
общий делитель (НОД) двух целых положительных чисел A и B, используя
алгоритм Евклида:
НОД(A, B) = НОД(B, A mod B), если B 6= 0;
НОД(A, 0) = A.
С помощью этой функции найти наибольшие общие делители пар (A, B),
Процедуры и функции
39
( A, C), ( A, D), если даны числа A, B, C, D.
Proc47. Используя функцию NOD2 из задания Proc46, описать процедуру
Frac1( a, b, p, q), преобразующую дробь a/ b к несократимому виду p/ q (все
параметры процедуры — целого типа, a и b — входные, p и q — выходные).
Знак результирующей дроби p/ q приписывается числителю (т. е. q > 0). С
помощью Frac1 найти несократимые дроби, равные a/ b + c/ d, a/ b + e/ f,
a/ b + g/ h (числа a, b, c, d, e, f, g, h даны).
Proc48. Учитывая, что наименьшее общее кратное двух целых положитель-
ных чисел A и B равно A·( B/НОД( A, B)), где НОД( A, B) — наибольший
общий делитель A и B, и используя функцию NOD2 из задания Proc46,
описать функцию NOK2( A, B) целого типа, находящую наименьшее об-
щее кратное чисел A и B. С помощью NOK2 найти наименьшие общие
кратные пар ( A, B), ( A, C), ( A, D), если даны числа A, B, C, D.
Proc49. Учитывая соотношение НОД( A, B, C) = НОД(НОД( A, B), C) и исполь-
зуя функцию NOD2 из задания Proc46, описать функцию NOD3( A, B, C)
целого типа, находящую наибольший общий делитель трех целых поло-
жительных чисел A, B, C. С помощью этой функции найти наибольшие
общие делители троек ( A, B, C), ( A, C, D) и ( B, C, D), если даны числа A,
B, C, D.
Proc50. Описать процедуру TimeToHMS( T, H, M, S), определяющую по вре-
мени T (в секундах) содержащееся в нем количество часов H, минут M и
секунд S ( T — входной, H, M и S — выходные параметры целого типа).
Используя эту процедуру, найти количество часов, минут и секунд для
пяти данных отрезков времени T
1
, T
2
, . . ., T
5
.
Proc51. Описать процедуру IncTime( H, M, S, T), которая увеличивает на T се-
кунд время, заданное в часах H, минутах M и секундах S ( H, M и S —
входные и выходные параметры, T — входной параметр; все параметры —
целые положительные). Дано время (в часах H, минутах M, секундах S)
и целое число T. Используя процедуру IncTime, увеличить данное время
на T секунд и вывести новые значения H, M, S.
Proc52. Описать функцию IsLeapYear( Y ) логического типа, которая возвраща-
ет
TRUE
, если год Y (целое положительное число) является високосным,
и
FALSE
в противном случае. Вывести значение функции IsLeapYear для
пяти данных значений параметра Y. Високосным считается год, делящий-
ся на 4, за исключением тех годов, которые делятся на 100 и не делятся
на 400.
40
М. Э. Абрамян. Электронный задачник Programming Taskbook 4.5
Proc53. Используя функцию IsLeapYear из задания Proc52, описать функцию
MonthDays( M, Y ) целого типа, которая возвращает количество дней для
M-го месяца года Y (1 ≤ M ≤ 12, Y > 0 — целые числа). Вывести значение
функции MonthDays для данного года Y и месяцев M
1
, M
2
, M
3
.
Proc54. Используя функцию MonthDays из задания Proc53, описать процедуру
PrevDate( D, M, Y ), которая по информации о правильной дате, включа-
ющей день D, номер месяца M и год Y, определяет предыдущую дату
(параметры целого типа D, M, Y являются одновременно входными и
выходными). Применить процедуру PrevDate к трем исходным датам и
вывести полученные значения предыдущих дат.
Proc55. Используя функцию MonthDays из задания Proc53, описать процедуру
NextDate( D, M, Y ), которая по информации о правильной дате, включа-
ющей день D, номер месяца M и год Y, определяет следующую дату
(параметры целого типа D, M, Y являются одновременно входными и
выходными). Применить процедуру NextDate к трем исходным датам и
вывести полученные значения следующих дат.
Proc56. Описать функцию Leng( x
A
, y
A
, x
B
, y
B
) вещественного типа, находя-
щую длину отрезка AB на плоскости по координатам его концов:
| AB| =
q
( x
A
− x
B
)
2
+ ( y
A
− y
B
)
2
( x
A
, y
A
, x
B
, y
B
— вещественные параметры). С помощью этой функции
найти длины отрезков AB, AC, AD, если даны координаты точек A, B, C, D.
Proc57. Используя функцию Leng из задания Proc56, описать функцию
Perim( x
A
, y
A
, x
B
, y
B
, x
C
, y
C
) вещественного типа, находящую периметр
треугольника ABC по координатам его вершин ( x
A
, y
A
, x
B
, y
B
, x
C
, y
C
—
вещественные параметры). С помощью этой функции найти периметры
треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D.
Proc58. Используя функции Leng и Perim из заданий Proc56 и Proc57, описать
функцию Area( x
A
, y
A
, x
B
, y
B
, x
C
, y
C
) вещественного типа, находящую
площадь треугольника ABC по формуле
S
ABC
=
√
p·( p−| AB|) ·( p−| AC|) ·( p−| BC|),
где p — полупериметр. С помощью этой функции найти площади тре-
угольников ABC, ABD, ACD, если даны координаты точек A, B, C, D.
Proc59. Используя функции Leng и Area из заданий Proc56 и Proc58, описать
функцию Dist( x
P
, y
P
, x
A
, y
A
, x
B
, y
B
) вещественного типа, находящую
расстояние D( P, AB) от точки P до прямой AB по формуле
D( P, AB) = 2 ·S
P AB
/| AB|,
Минимумы и максимумы
41
где S
P AB
— площадь треугольника PAB. С помощью этой функции найти
расстояния от точки P до прямых AB, AC, BC, если даны координаты
точек P, A, B, C.
Proc60. Используя функцию Dist из задания Proc59, описать процедуру
Heights( x
A
, y
A
, x
B
, y
B
, x
C
, y
C
, h
A
, h
B
, h
C
), находящую высоты h
A
, h
B
, h
C
тре-
угольника ABC (выходные параметры), проведенные соответственно из
вершин A, B, C (их координаты являются входными параметрами). С по-
мощью этой процедуры найти высоты треугольников ABC, ABD, ACD,
если даны координаты точек A, B, C, D.
Достарыңызбен бөлісу: |