Programming Taskbook


E-mail:

Пароль:

Регистрация пользователя   Восстановление пароля

English

ЮФУ SMBU

Электронный задачник по программированию

©  М. Э. Абрамян (Южный федеральный университет, Университет МГУ-ППИ в Шэньчжэне), 1998–2024

 

Задания | Группы заданий | Func

PrevNext


Функции

Данная группа заданий предназначена для использования в варианте задачника для языков Python, Ruby и Julia. Входящие в нее задания аналогичны заданиям из стандартной группы Proc, однако формулировки части заданий изменены с учетом особенностей языков Python, Ruby и Julia, связанных с передачей параметров и определением возвращаемых значений функций.

Описание и использование функций

Func1. Описать функцию Sign(X) целого типа, возвращающую для вещественного числа X следующие значения:

−1,    если X < 0;        0,    если X = 0;        1,    если X > 0.

С помощью этой функции найти значение выражения Sign(A) + Sign(B) для данных вещественных чисел A и B.

Func2. Описать функцию RootCount(A, BC) целого типа, определяющую количество корней квадратного уравнения A·x2 + B·x + C = 0 (AB, C — вещественные параметры, A ≠ 0). С ее помощью найти количество корней для каждого из трех квадратных уравнений с данными коэффициентами. Количество корней определять по значению дискриминанта:

D = B2 − 4·A·C.

Func3. Описать функцию CircleS(R) вещественного типа, находящую площадь круга радиуса R (R — вещественное). С помощью этой функции найти площади трех кругов с данными радиусами. Площадь круга радиуса R вычисляется по формуле S = π·R2. В качестве значения π использовать 3.14.

Func4. Описать функцию RingS(R1, R2) вещественного типа, находящую площадь кольца, заключенного между двумя окружностями с общим центром и радиусами R1 и R2 (R1 и R2 — вещественные, R1 > R2). С ее помощью найти площади трех колец, для которых даны внешние и внутренние радиусы. Воспользоваться формулой площади круга радиуса R: S = π·R2. В качестве значения π использовать 3.14.

Func5°. Описать функцию TriangleP(a, h), находящую периметр равнобедренного треугольника по его основанию a и высоте h, проведенной к основанию (a и h — вещественные). С помощью этой функции найти периметры трех треугольников, для которых даны основания и высоты. Для нахождения боковой стороны b треугольника использовать теорему Пифагора:

b2 = (a/2)2 + h2.

Func6°. Описать функцию SumRange(A, B) целого типа, находящую сумму всех целых чисел от A до B включительно (A и B — целые). Если A > B, то функция возвращает 0. С помощью этой функции найти суммы чисел от A до B и от B до C, если даны числа A, BC.

Func7. Описать функцию Calc(A, B, Op) вещественного типа, выполняющую над ненулевыми вещественными числами A и B одну из арифметических операций и возвращающую ее результат. Вид операции определяется целым параметром Op: 1 — вычитание, 2 — умножение, 3 — деление, остальные значения — сложение. С помощью Calc выполнить для данных A и B операции, определяемые данными целыми N1, N2N3.

Func8. Описать функцию Quarter(x, y) целого типа, определяющую номер координатной четверти, в которой находится точка с ненулевыми вещественными координатами (xy). С помощью этой функции найти номера координатных четвертей для трех точек с данными ненулевыми координатами.

Func9. Описать функцию Even(K) логического типа, возвращающую True, если целый параметр K является четным, и False в противном случае. С ее помощью найти количество четных чисел в наборе из 10 целых чисел.

Func10°. Описать функцию IsSquare(K) логического типа, возвращающую True, если целый параметр K (> 0) является квадратом некоторого целого числа, и False в противном случае. С ее помощью найти количество квадратов в наборе из 10 целых положительных чисел.

Func11. Описать функцию IsPower5(K) логического типа, возвращающую True, если целый параметр K (> 0) является степенью числа 5, и False в противном случае. С ее помощью найти количество степеней числа 5 в наборе из 10 целых положительных чисел.

Func12. Описать функцию IsPowerN(K, N) логического типа, возвращающую True, если целый параметр K (> 0) является степенью числа N (> 1), и False в противном случае. Дано число N (> 1) и набор из 10 целых положительных чисел. С помощью функции IsPowerN найти количество степеней числа N в данном наборе.

Func13. Описать функцию IsPrime(N) логического типа, возвращающую True, если целый параметр N (> 1) является простым числом, и False в противном случае (число, большее 1, называется простым, если оно не имеет положительных делителей, кроме 1 и самого себя). Дан набор из 10 целых чисел, больших 1. С помощью функции IsPrime найти количество простых чисел в данном наборе.

Func14. Описать функцию DigitCount(K) целого типа, находящую количество цифр целого положительного числа K. Используя эту функцию, найти количество цифр для каждого из пяти данных целых положительных чисел.

Func15. Описать функцию DigitN(K, N) целого типа, возвращающую N-ю цифру целого положительного числа K (цифры в числе нумеруются справа налево, правая цифра имеет номер 1). Если количество цифр в числе K меньше N, то функция возвращает −1. Для каждого из пяти данных целых положительных чисел K1, K2, …, K5 вызвать функцию DigitN с параметром N, изменяющимся от 1 до 5.

Func16. Описать функцию IsPalindrome(K), возвращающую True, если целый параметр K (> 0) является палиндромом (т. е. его запись читается одинаково слева направо и справа налево), и False в противном случае. С ее помощью найти количество палиндромов в наборе из 10 целых положительных чисел.

Func17. Описать функцию DegToRad(D) вещественного типа, находящую величину угла в радианах, если дана его величина D в градусах (D — вещественное число, 0 ≤ D < 360). Воспользоваться следующим соотношением: 180° = π радианов. В качестве значения π использовать 3.14. С помощью функции DegToRad перевести из градусов в радианы пять данных углов.

Func18. Описать функцию RadToDeg(R) вещественного типа, находящую величину угла в градусах, если дана его величина R в радианах (R — вещественное число, 0 ≤ R < 2·π). Воспользоваться следующим соотношением: 180° = π радианов. В качестве значения π использовать 3.14. С помощью функции RadToDeg перевести из радианов в градусы пять данных углов.

Func19. Описать функцию Fact(N) вещественного типа, вычисляющую значение факториала N! = 1·2·…·N (N > 0 — параметр целого типа; вещественное возвращаемое значение используется для того, чтобы избежать целочисленного переполнения при больших значениях N). С помощью этой функции найти факториалы пяти данных целых чисел.

Func20. Описать функцию Fact2(N) вещественного типа, вычисляющую двойной факториал:

N!! = 1·3·5·…·N,    если N — нечетное;
N!! = 2·4·6·…·N,    если N — четное

(N > 0 — параметр целого типа; вещественное возвращаемое значение используется для того, чтобы избежать целочисленного переполнения при больших значениях N). С помощью этой функции найти двойные факториалы пяти данных целых чисел.

Func21. Описать функцию Fib(N) целого типа, вычисляющую N-й элемент последовательности чисел Фибоначчи FK, которая описывается следующими формулами:

F1 = 1,        F2 = 1,        FK = FK−2 + FK−1,    K = 3, 4, … .

Используя функцию Fib, найти пять чисел Фибоначчи с данными номерами N1, N2, …, N5.

Func22. Описать функцию PowerA3(A), возвращающую третью степень числа A (A — вещественный параметр). С помощью этой функции найти третьи степени пяти данных чисел.

Func23. Описать функцию PowerA234(A), вычисляющую вторую, третью и четвертую степень числа A и возвращающую эти степени в виде трех вещественных чисел (A — вещественный параметр). С помощью этой функции найти вторую, третью и четвертую степень пяти данных чисел.

Func24. Описать функцию Mean(X, Y), вычисляющую среднее арифметическое (X+Y)/2 и среднее геометрическое (X·Y)1/2 двух положительных чисел X и Y и возвращающую результат в виде двух вещественных чисел (X и Y — вещественные параметры). С помощью этой функции найти среднее арифметическое и среднее геометрическое для пар (AB), (AC), (AD), если даны AB, CD.

Func25°. Описать функцию TrianglePS(a), вычисляющую по стороне a равностороннего треугольника его периметр P = 3·a и площадь S = a2·(3)1/2/4 и возвращающую их в виде двух вещественных чисел (a — вещественный параметр). С помощью этой функции найти периметры и площади трех равносторонних треугольников с данными сторонами.

Func26. Описать функцию RectPS(x1y1x2y2), вычисляющую и возвращающую периметр P и площадь S прямоугольника со сторонами, параллельными осям координат, и координатами (x1, y1), (x2, y2) его противоположных вершин (x1, y1, x2, y2 — вещественные параметры). С помощью этой функции найти периметры и площади трех прямоугольников с данными противоположными вершинами.

Func27. Описать функцию DigitCS(K), находящую и возвращающую количество C цифр целого положительного числа K, а также их сумму S (K — параметр целого типа). С помощью этой функции найти количество и сумму цифр для каждого из пяти данных целых чисел.

Func28. Описать функцию InvDigits(K), меняющую порядок следования цифр целого положительного числа K на обратный и возвращающую полученное число (K — параметр целого типа). С помощью этой функции поменять порядок следования цифр на обратный для каждого из пяти данных целых чисел.

Func29°. Описать функцию AddRightDigit(D, K), добавляющую к целому положительному числу K справа цифру D и возвращающую полученное число (D и K — параметры целого типа, причем D лежит в диапазоне 0–9). С помощью этой функции последовательно добавить к данному числу K справа данные цифры D1 и D2, выводя результат каждого добавления.

Func30. Описать функцию AddLeftDigit(D, K), добавляющую к целому положительному числу K слева цифру D и возвращающую полученное число (D и K — параметры целого типа, причем D лежит в диапазоне 1–9. С помощью этой функции последовательно добавить к данному числу K слева данные цифры D1 и D2, выводя результат каждого добавления.

Func31°. Описать функцию Swap(X, I, J), меняющую содержимое вещественных элементов XI и XJ списка X (I и J — параметры целого типа; функция возвращает None). С ее помощью для списка из четырех данных элементов последовательно поменять содержимое двух первых, двух последних и двух средних элементов, после чего вывести новые значения элементов списка.

Func32. Описать функцию Minmax(XIJ), записывающую в элемент XI списка X минимальное из значений XI и XJ, а в элемент XJ — максимальное из этих значений (X — список вещественных чисел, I и J — параметры целого типа; функция возвращает None). Используя четыре вызова этой функции, найти минимальное и максимальное значение в списке из четырех данных чисел.

Func33. Описать функцию SortInc3(X), меняющую содержимое списка X из трех вещественных элементов таким образом, чтобы их значения оказались упорядоченными по возрастанию (функция возвращает None). С помощью этой функции упорядочить по возрастанию два данных списка X и Y.

Func34. Описать функцию SortDec3(X), меняющую содержимое списка X из трех вещественных элементов таким образом, чтобы их значения оказались упорядоченными по убыванию (функция возвращает None). С помощью этой функции упорядочить по убыванию два данных списка X и Y.

Func35. Описать функцию ShiftRight3(X), выполняющую правый циклический сдвиг для списка X из трех вещественных элементов: значение каждого элемента переходит в следующий элемент, а значение последнего элемента — в начальный элемент списка (функция возвращает None). С помощью этой функции выполнить правый циклический сдвиг для двух данных списков X и Y.

Func36. Описать функцию ShiftLeft3(X), выполняющую левый циклический сдвиг для списка X из трех вещественных элементов: значение каждого элемента переходит в предыдущий элемент, а значение начального элемента — в последний элемент списка (функция возвращает None). С помощью этой функции выполнить левый циклический сдвиг для двух данных списков X и Y.

Дополнительные задания на функции

Func37. Описать функцию Power1(A, B) вещественного типа, находящую величину AB по формуле AB = exp(B·ln(A)) (параметры A и B — вещественные). В случае нулевого или отрицательного параметра A функция возвращает 0. С помощью этой функции найти степени AP, BP, CP, если даны числа PA, BC.

Func38. Описать функцию Power2(A, N) вещественного типа, находящую величину AN (A — вещественный, N — целый параметр) по следующим формулам:

A0 = 1;
AN = A·A·…·A    (N сомножителей),    если N > 0;
AN = 1/(A·A·…·A)    (|N| сомножителей),    если N < 0.

С помощью этой функции найти AK, AL, AM, если даны числа A, K, LM.

Func39. Используя функции Power1 и Power2 из Func37 и Func38, описать функцию Power3(AB) вещественного типа с вещественными параметрами, находящую AB следующим образом: если B имеет нулевую дробную часть, то вызывается Power2(AN), где N — переменная целого типа, равная числу B; иначе вызывается Power1(AB). С помощью Power3 найти AP, BP, CP, если даны числа P, A, BC.

Func40°. Описать функцию Exp1(x, ε) вещественного типа (параметры x, ε — вещественные, ε > 0), находящую приближенное значение функции exp(x):

exp(x) = 1 + x + x2/(2!) + x3/(3!) + … + xn/(n!) + …

(n! = 1·2·…·n). В сумме учитывать все слагаемые, большие ε. С помощью Exp1 найти приближенное значение экспоненты для данного x при шести данных ε.

Func41. Описать функцию Sin1(x, ε) вещественного типа (параметры x, ε — вещественные, ε > 0), находящую приближенное значение функции sin(x):

sin(x) = x − x3/(3!) + x5/(5!) − … + (−1)n·xn+1/((2·n+1)!) + … .

В сумме учитывать все слагаемые, модуль которых больше ε. С помощью Sin1 найти приближенное значение синуса для данного x при шести данных ε.

Func42. Описать функцию Cos1(x, ε) вещественного типа (параметры x, ε — вещественные, ε > 0), находящую приближенное значение функции cos(x):

cos(x) = 1 − x2/(2!) + x4/(4!) − … + (−1)n·xn/((2·n)!) + … .

В сумме учитывать все слагаемые, модуль которых больше ε. С помощью Cos1 найти приближенное значение косинуса для данного x при шести данных ε.

Func43. Описать функцию Ln1(x, ε) вещественного типа (параметры x, ε — вещественные, |x| < 1, ε > 0), находящую приближенное значение функции ln(1 + x):

ln(1 + x) = x − x2/2 + x3/3 − … + (−1)n·xn+1/(n+1) + … .

В сумме учитывать все слагаемые, модуль которых больше ε. С помощью Ln1 найти приближенное значение ln(1 + x) для данного x при шести данных ε.

Func44. Описать функцию Arctg1(x, ε) вещественного типа (параметры x, ε — вещественные, |x| < 1, ε > 0), находящую приближенное значение функции arctg(x):

arctg(x) = x − x3/3 + x5/5 − … + (−1)n·xn+1/(2·n+1) + … .

В сумме учитывать все слагаемые, модуль которых больше ε. С помощью Arctg1 найти приближенное значение arctg(x) для данного x при шести данных ε.

Func45. Описать функцию Power4(x, a, ε) вещественного типа (параметры x, a, ε — вещественные, |x| < 1; a, ε > 0), находящую приближенное значение функции (1 + x)a:

(1 + x)a = 1 + a·x + a·(a−1)·x2/(2!) + … + a·(a−1)·…·(an+1)·xn/(n!) + … .

В сумме учитывать все слагаемые, модуль которых больше ε. С помощью Power4 найти приближенное значение (1 + x)a для данных x и a при шести данных ε.

Func46. Описать функцию GCD2(A, B) целого типа, находящую наибольший общий делитель (НОД, greatest common divisor) двух целых положительных чисел A и B, используя алгоритм Евклида:

НОД(A, B) = НОД(B, A mod B),    если B ≠ 0;        НОД(A, 0) = A,

где «mod» обозначает операцию взятия остатка от деления. С помощью GCD2 найти наибольшие общие делители пар (AB), (AC), (AD), если даны числа A, B, CD.

Func47. Используя функцию GCD2 (см. Func46), описать функцию Frac1(ab), преобразующую дробь a/b к несократимому виду p/q и возвращающую два значения p и q (ab, pq — целые). Знак результирующей дроби p/q приписывается числителю (т. е. q > 0). С помощью Frac1 найти несократимые дроби, равные a/b + c/d, a/b + e/f, a/b + g/h (числа abcdefgh даны).

Func48. Наименьшее общее кратное (least common multiple) двух целых положительных чисел A и B равно A·(B/НОД(AB)), где НОД(AB) — наибольший общий делитель A и B. Используя функцию GCD2 (см. Func46), описать функцию LCM2(A, B) целого типа, находящую наименьшее общее кратное чисел A и B. С помощью LCM2 найти наименьшие общие кратные пар (AB), (AC), (AD), если даны числа ABCD.

Func49. Учитывая соотношение НОД(A, B, C) = НОД(НОД(A, B), C) и используя функцию GCD2 (см. Func46), описать функцию GCD3(A, BC) целого типа, находящую наибольший общий делитель трех целых положительных чисел A, BC. С помощью GCD3 найти наибольшие общие делители троек (ABC), (ACD) и (BCD), если даны числа A, B, CD.

Func50. Описать функцию TimeToHMS(T), определяющую по времени T (в секундах) содержащееся в нем количество часов H, минут M и секунд S и возвращающую значения H, M, S (TH, M S — целые). Используя эту функцию, найти количество часов, минут и секунд для пяти данных отрезков времени T1, T2, …, T5.

Func51. Описать функцию IncTime(HMST), которая увеличивает на T секунд время, заданное в часах H, минутах M и секундах S, и возвращает новые значения часов, минут и секунд (все данные — целые положительные). Дано время (в часах H, минутах M, секундах S) и целое число T. Используя функцию IncTime, увеличить данное время на T секунд и вывести новые значения H, MS.

Func52. Описать функцию IsLeapYear(Y) логического типа, которая возвращает True, если год Y (целое положительное число) является високосным, и False в противном случае. Вывести значение функции IsLeapYear для пяти данных значений параметра Y. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400.

Func53. Используя функцию IsLeapYear из задания Func52, описать функцию MonthDays(M, Y) целого типа, которая возвращает количество дней для M-го месяца года Y (1 ≤ M ≤ 12, Y > 0 — целые числа). Вывести значение функции MonthDays для данного года Y и месяцев M1, M2M3.

Func54. Используя функцию MonthDays из задания Func53, описать функцию PrevDate(DMY), которая по информации о правильной дате, включающей день D, номер месяца M и год Y, определяет предыдущую дату и возвращает новые значения дня, месяца и года (все данные — целые). Применить функцию PrevDate к трем исходным датам и вывести полученные значения предыдущих дат.

Func55. Используя функцию MonthDays из задания Func53, описать функцию NextDate(DMY), которая по информации о правильной дате, включающей день D, номер месяца M и год Y, определяет следующую дату и возвращает новые значения дня, месяца и года (все данные — целые). Применить функцию NextDate к трем исходным датам и вывести полученные значения следующих дат.

Func56. Описать функцию Leng(xA, yA, xB, yB) вещественного типа, находящую длину отрезка AB на плоскости по координатам его концов:

|AB| = ((xA − xB)2 + (yA − yB)2)1/2

(xA, yA, xB, yB — вещественные параметры). С помощью этой функции найти длины отрезков AB, ACAD, если даны координаты точек AB, CD.

Func57. Используя функцию Leng из задания Func56, описать функцию Perim(xA, yA, xB, yB, xC, yC) вещественного типа, находящую периметр треугольника ABC по координатам его вершин (xA, yA, xB, yB, xC, yC — вещественные параметры). С помощью этой функции найти периметры треугольников ABC, ABDACD, если даны координаты точек AB, CD.

Func58. Используя функции Leng и Perim из заданий Func56 и Func57, описать функцию Area(xA, yA, xB, yB, xC, yC) вещественного типа, находящую площадь треугольника ABC по формуле

SABC = (p·(p−|AB|)·(p−|AC|)·(p−|BC|))1/2,

где pполупериметр. С помощью этой функции найти площади треугольников ABC, ABDACD, если даны координаты точек AB, CD.

Func59. Используя функции Leng и Area из заданий Func56 и Func58, описать функцию Dist(xP, yP, xA, yA, xB, yB) вещественного типа, находящую расстояние D(PAB) от точки P до прямой AB по формуле

D(PAB) = 2·SPAB/|AB|,

где SPAB — площадь треугольника PAB. С помощью этой функции найти расстояния от точки P до прямых AB, ACBC, если даны координаты точек PA, BC.

Func60. Используя функцию Dist из задания Func59, описать функцию Altitudes(xAyAxByBxCyC), находящую и возвращающую высоты hA, hB, hC треугольника ABC, проведенные соответственно из вершин A, BC (их координаты являются параметрами функции). С помощью этой функции найти высоты треугольников ABC, ABDACD, если даны координаты точек AB, CD.


PrevNext

 

Рейтинг@Mail.ru

Разработка сайта:
М. Э. Абрамян, В. Н. Брагилевский

Последнее обновление:
01.01.2024