01_СТАР_ФРИ_Пользовательские функции

Старшая (FREE) Пользовательские функции    23.09.2017
В программе можно многократно обращаться к некоторым отдельным фрагментам программы (без оператора goto), если их заранее правильно описать. Такие фрагменты называются функциями и процедурами. Функция в отличие от процедуры может принимать только одно значение и используется в выражениях после знака присвоить или в логическом выражении слева или справа от знаков сравнения.
В Паскале существует большое количество стандартных встроенных функций, многие из которых вы уже знаете: abs, ins, sqrt, random, и т. д. Обратите внимание на особенности их использования: они используются в формулах, аргумент функции всегда пишется в скобках.
В любом языке программирования вы можете создавать свои функции и потом использовать их в программе. Например, если вам в программе нужно посчитать в разных местах периметры большого количества треугольников, то вы можете предварительно создать соответствующую функцию, а затем вызывать ее в нужном месте программы.
Пример. Рассчитать значение выражения: y=x5+x11+x4, используя функцию возведения произвольного числа в целую степень.
Недостатки xy=exp(y*ln(x)):
1. Округление не всегда выполняется корректно для целых чисел, так, например, 3 в степени 4 не всегда будет ровно 81, а число, приближенно ему равное.
2. Использование функции ln не дает возможности возводить в степень отрицательные числа. Знак приходится определять искусственно.

program prim;
var y,x:real;

function st(y:real;x:integer):real;
var i:integer;p:real;
begin
p:=1;
for i:=1 to x do
p:=p*y;
st:=p;
end;

begin
write('Введите Х=');
readln(x);
y:=st(x,5)+st(x,11)+st(x,4);
writeln('Y=',y:0:5);
end.
Все функции, используемые в программе (их может быть сколько угодно) описываются в основной программе после описания переменных до начала основного кода программы (до begin).
Заметьте, что название функции одновременно является именем той переменной, в которую возвращается значение после вычисления функции, поэтому в имени функции указывается тип.
В скобках указываются те параметры, которые должны передаваться из основной программы для вычисления функции. Например, для возведения числа в целую степень надо передать само число и степень. Имя тех переменных, которыми они будут обозначаться внутри функции и их тип указываются сразу после названия функции в скобках.
Функцию можно сравнить с отдельной программой, набранной в тексте основной, поэтому функция использует свои переменные и даже если они совпадают по названию с описанными в основной программе, все равно функция использует только свои собственные переменные.
При вызове функции указывается ее название и в скобках через запятую числа или переменные, которые функция будет использовать как исходные данные. При начале работы функции она берет эти данные и переименовывает в соответствии с теми названиями переменных, которые указаны в скобках после названия функции. Этот механизм называется передачей параметра из текста основной программы в тело функции. Т. е. Вы можете вызывать одну и ту же функцию, используя в скобках не только разные значения, но и разные имена переменных. Причем порядок переменных в скобках играет очень важную роль, т. е. его нельзя изменять.
Задачи:
1. Используя пример, вычислить значение функции: 13 EMBED Equation.3 1415
2. Используя функцию вычисления расстояния между двумя точками по их координатам рассчитать периметр произвольного четырехугольника, если заданы координаты всех его вершин.
3. У добрейшей учительницы математики Глафиры Пантелеймоновны сегодня очень хорошее настроение, поэтому к контрольной работе в любимом 8 «А» классе она готовит всего N вариантов (1Ученик 8 «А» класса Василий Кукушкин давно просил Глафиру Пантелеймоновну дать ему дополнительное задание для исправления последних честно заработанных пяти двоек. Добрейшая учительница пошла навстречу ученику (а как иначе?) и предложила ему прорешать задачи всех вариантов, чтобы ей было легче проверять контрольную. Вот типичная задача i-того варианта:
По заданному набору Аi, Bi, Ci выяснить, существует ли треугольник с такими сторонами, если да, то определить его вид (равносторонний, равнобедренный, разносторонний), а также определить его площадь.
Поскольку Васе предстоит все решить к завтрашнему утру, он обратился к Вам за помощью. Помогите Василию.
Входные данные: Первая строка входного файла содержит единственное натуральное число N (1Выходные данные: В каждой из N строк “YES” или “NO”. В строках со словом “YES” через пробел число 1, 2 или 3 (1 – равносторонний, 2  равнобедренный, 3 – разносторонний), еще через один пробел  площадь треугольника с точностью до сотых.
4. «Сетевое хранилище»
В огромной холдинговой компании «5х5 Inc.» работает сетевое хранилище. В нем хранятся терабайты данных, сейчас в разгар отчетного периода оно часто загружено и наконец, хранилище не выдержало и сломалось. Все, что смогли сделать работники службы поддержки это достать оттуда данные, но они были перемешаны. Каждый файл содержал числа, упорядоченные по возрастанию, а сейчас они перемешаны. Ваша задача упорядочить данные по возрастанию в каждом документе.
Входные данные: В первой строке входного файла находится число N (1< N <50), количество документов. В следующих N строках содержится число M (количество чисел в файле) (1< M < 50) и данные из каждого файла. Числа (данные) >0.
Выходные данные: В N строках выходного файла содержатся отсортированные данные соответствующего документа.
in.txt
out.txt

2
4 2 3 4 1
3 5 2 7
1 2 3 4
2 5 7

1
5 9 78 1 6 10
1 6 9 10 78


5. Количество цифр
(Время: 1 сек. Память: 16 Мб Сложность: 10%)
Дано три символа. Требуется определить, сколько из них являются цифрами.

input.txt
output.txt

1
A % 5
1

2
1 2 3
3

При решении данной задачи необходимо реализовать функцию IsDigit(C), которая возвращает 1, если символ C – цифра, и 0 – иначе.
Входные данные: Входной файл INPUT.TXT содержит три символа, разделенные пробелом. Гарантируется, что ASCII-коды символов превышают 32.
Выходные данные: В выходной файл OUTPUT.TXT выведите ответ на задачу.
6. Подсчет букв
(Время: 1 сек. Память: 16 Мб Сложность: 11%)

input.txt
output.txt

1
A % 5
1

2
A 2 b
2

Дано три символа. Требуется определить, сколько из них являются буквами латинского алфавита (в любом регистре).
При решении данной задачи необходимо реализовать функцию IsLetter(C), которая возвращает 1, если символ C – латинская буква, и 0 – иначе.
Входные данные: Входной файл INPUT.TXT содержит три символа, разделенные пробелом. Гарантируется, что ASCII-коды символов превышают 32.
Выходные данные: В выходной файл OUTPUT.TXT выведите ответ на задачу.
7. Число сочетаний
(Время: 1 сек. Память: 16 Мб Сложность: 14%)

input.txt
output.txt

1
3 2
3

2
7 3
35

Факториал числа n – произведение всех натуральных чисел от 1 до n:

Сочетанием из n по k называют набор из k элементов, выбранных из данного множества, содержащего n различных элементов. При этом наборы, отличающиеся только порядком следования элементов, считаются одинаковыми.
Число возможных сочетаний из n по k вычисляется по следующей формуле:

По заданным целым числам n и k требуется вычислить число сочетаний. При решении данной задачи необходимо реализовать функцию F(n), вычисляющую факториал числа.
Входные данные: Входной файл INPUT.TXT содержит целые числа n и k (0
· k 
· n 
· 20).
Выходные данные: В выходной файл OUTPUT.TXT выведите число сочетаний из n по k.



8. Сумма простых чисел
(Время: 1 сек. Память: 16 Мб Сложность: 15%)
Простым числом называют натуральное число, у которого ровно два различных натуральных делителя. Другими словами, число является простым, если оно больше единицы и делится нацело только на себя и на единицу.

input.txt
output.txt

1
3 5 11
19 Yes

2
3 4 5
8 No

Дано три целых числа. Требуется определить, какие из заданных чисел являются простыми, и вычислить их сумму. Также требуется проверить, является ли полученная сумма простыми числом.
При решении данной задачи необходимо реализовать функцию IsPrime(N), которая возвращает N, если N – простое число, и 0 – иначе.
Входные данные: Входной файл INPUT.TXT содержит три целых числа, не превосходящие 1000 по абсолютной величине.
Выходные данные: В первой строке выходного файла OUTPUT.TXT выведите сумму, составленную из простых чисел во входных данных. Если таковых чисел нет, выведите 0. Во второй строке выведите «Yes», если полученная сумма – простое число, и «No» – в противном случае.
9. Прямоугольный треугольник
(Время: 1 сек. Память: 16 Мб Сложность: 16%)
Заданы целочисленные координаты вершин треугольника на плоскости. Необходимо определить, является ли данный треугольник прямоугольным.

input.txt
output.txt

1
0 3 0 0 5 0
Yes

2
0 0 1 5 2 0
No

Требуется решить данную задачу с использованием теоремы Пифагора, вычислив квадраты длин сторон треугольника и проверив условие: a2+b2=c2. При этом следует описать структуру Point для хранения координат точки на плоскости, а также функцию Side(a,b), вычисляющую квадрат длины отрезка между парой точек.
Входные данные: Во входном файле INPUT.TXT записаны через пробел координаты вершин треугольника в формате x1 y1 x2 y2 x3 y3. Все числа целые, не превосходящие 1000 по абсолютной величине.
Выходные данные: В выходной файл OUTPUT.TXT выведите «Yes», если треугольник является прямоугольным и «No» в противном случае.
10. Площадь треугольника
(Время: 1 сек. Память: 16 Мб Сложность: 15%)

input.txt
output.txt

1
2 1 2 4 6 1
6

2
0 0 0 3 3 0
4.5

По целочисленным координатам вершин треугольника (x1,y1), (x2,y2) и (x3,y3) требуется вычислить его площадь.
Входные данные: Входной файл INPUT.TXT содержит 6 целых чисел x1,y1,x2,y2,x3,y3 – координаты вершин треугольника. Все числа не превышают 106 по абсолютной величине.
Выходные данные: В выходной файл OUTPUT.TXT выведите точное значение площади заданного треугольника.

Рисунок 2Описание: http://www.acmp.ru/asp/article/image.asp?id=570

Приложенные файлы

  • doc 8486015
    Размер файла: 63 kB Загрузок: 0

Добавить комментарий