В задании Proc21 описываем функцию вычисления суммы целых чисел от А до В; в Proc22 вычисляем результат арифметического действия с двумя числами А и В; Proc23 описывает функцию определения четверти, в которой находится точка с заданными координатами.
Proc21. Описать функцию SumRange(A, B) целого типа, находящую сумму всех целых чисел от A до B включительно (A и B — целые). Если A > B, то функция возвращает 0. С помощью этой функции найти суммы чисел от A до B и от B до C, если даны числа A, B, C.
{ Функция возвращает сумму всех целых чисел
от X до Y включительно (X и Y — целые) }function SumRange(X, Y:integer):integer;
var
i, S:integer;
begin
S :=0; //начальное значение суммыfor i := X to Y do//для всех чисел от X до Y
S := S + i; //сумму увеличиваем на i
SumRange := S; //значение суммы в концеend;
{ Основная программа }var
A, B, C:integer;
begin{ Вводим числа А, В и С: }write(' A = ');
readln(A);
write(' B = ');
readln(B);
write(' C = ');
readln(C);
{ Вызываем функцию и выводим результат: }writeln('Сумма чисел от ', A,' до ', B,': ', SumRange(A, B));
writeln('Сумма чисел от ', B,' до ', C,': ', SumRange(B, C));
end.
Proc22. Описать функцию Calc(A, B, Op) вещественного типа, выполняющую над ненулевыми вещественными числами A и B одну из арифметических операций и возвращающую ее результат. Вид операции определяется целым параметром Op: 1 — вычитание, 2 — умножение, 3 — деление, остальные значения — сложение. С помощью Calc выполнить для данных A и B операции, определяемые данными целыми N1, N2, N3.
{ Функция возвращает результат выполнения одной из
арифметических операций над вещественными числами А и В }function Calc(A, B:real; Op:byte):real;
begin{ Проверять переданное в функцию значение Op
будем с помощью оператора выбора case: }case Op of1: Calc := A - B; //1 — вычитание2: Calc := A * B; //2 — умножение3: Calc := A / B //3 — делениеelse Calc := A + B; //остальные значения — сложениеendend;
{ Основная программа }var
A, B:real;
N1, N2, N3:byte;
begin{ Вводим числа А и В: }write(' A = ');
readln(A);
write(' B = ');
readln(B);
{ Вводим номер операции N1, N2, N3 и вызываем функцию: }write(' N1 = ');
readln(N1);
writeln('Результат: ', Calc(A, B, N1));
write(' N2 = ');
readln(N2);
writeln('Результат: ', Calc(A, B, N2));
write(' N3 = ');
readln(N3);
writeln('Результат: ', Calc(A, B, N3));
end.
{ Функция возвращает результат выполнения одной из
арифметических операций над вещественными числами А и В }function Calc(A, B:real; Op:byte):real;
begin{ Сообщаем о названии арифм. действия и вычисляем результат: }case Op of1:beginwrite(' вычитание: '); Calc := A - B end;
2:beginwrite(' умножение: '); Calc := A * B end;
3:beginwrite(' деление: '); Calc := A / B endelsebeginwrite(' сложение: '); Calc := A + B endendend;
{ Основная программа }const
Q =3; //количество вычисленийvar
A, B:real;
N, i:byte;
beginfor i :=1to Q dobeginwrite('Введите А и В: ');
readln(A, B);
write('Номер операции: N', i,' = ');
readln(N);
writeln(Calc(A, B, N)); //вызываем функциюwritelnendend.
Proc23. Описать функцию Quarter(x, y) целого типа, определяющую номер координатной четверти, в которой находится точка с ненулевыми вещественными координатами (x, y). С помощью этой функции найти номера координатных четвертей для трех точек с данными ненулевыми координатами.
{ Функция возвращает номер координатной четверти, в которой
находится точка с ненулевыми вещественными координатами (x, y) }function Quarter(x, y:real):byte;
beginif x >0thenif y >0then Quarter :=1//1-я четвертьelseif y <0then Quarter :=4//4-я четвертьelsewriteln('Точка лежит на оси OX')elseif x <0thenif y >0then Quarter :=2//2-я четвертьelseif y <0then Quarter :=3//3-я четвертьelsewriteln('Точка лежит на оси OX')elseif y <>0thenwriteln('Точка лежит на оси OY')elsewriteln('Точка лежит в начале координат')end;
{ Основная программа }const
n =3; //количество пар (x, y) для проверкиvar
x, y:real; //координаты
i, number:byte;
beginfor i :=1to n dobeginwriteln('Введите координаты:');
write(' x = ');
readln(x);
write(' y = ');
readln(y);
number := Quarter(x, y); //вызываем ф-ю и вычисляем numberif number >0thenwriteln('Номер четверти: ', number);
writeln;
endend.