Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
pz6-11.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
118.78 Кб
Скачать
  1. Рішення задач за допомогою функцій.

Розглянемо приклад програми, в якій використовуються функції створені користувачем.

Приклад 3. Дано матрицю цілих чисел 3х6. Знайти, в якому рядку найбільше чисел кратних 3.

program example_3;

type

matr=array [1..3, 1..6] of integer;

var

A : matr;

I, J : byte;

function count(I : byte; A : matr) : byte;

{створюємо функцію, що підраховує кількість чисел кратних 3}

var

K : byte; {проміжна змінна, що буде визначати кількість чисел} begin

K := 0;

for J := 1 to 6 do

if (A[I,J] mod 3) then K := K+1;

count := K {значення проміжної змінної присвоюємо самій функції}

end;

begin

for I := 1 to 3 do

for J := 1 to 6 do

begin

write (,A[,,I , ‘,' ,J, ]=');

readln (A[I, J])

end;

if (count(1,A)>=cont(2,A)) and (count(1,A)>=cont(3,A))

then writeln('Найбільше чисел, що діляться на З в 1-му рядку')

else

if (count(2,A)>=cont(1,A)) and (count(2,A)>=cont(3,A))

then writeln('Найбільше чисел, що діляться на З в 2-му рядку')

else writeln('Найбільше чисел, що діляться на З в 3-му рядку');

readln

end.

Приклад 4. Використовуючи функцію max2(a,b), яка визначає максимальне з двох даних чисел, записати функцію max3(a,b,c), що визначає максимальне з трьох даних чисел, і організувати виклик цієї функції для обчислення суми найбільших значень трьох трійок довільних дійсних чисел.

Алгоритм пошуку максимуму з двох чисел являється стандартним. Написання алгоритму пошуку максимуму з трьох чисел розв'язується за допомогою двох викликів функції пошуку максимуму з двох чисел в такім послідовності:

знаходиться максимум з двох чисел (наприклад, a та b) ;

знаходиться максимум з вже найденого максимуму та третього числа с.

За умовою необхідно знайти суму найбільших значень трьох трійок довільних дійсних чисел, тому результатом роботи програми буде значення змінної Rezultat, в якій ми будемо здійснювати накопичення суми.

Виклик функції виконаємо трьома способами. Перший раз для трьох змінних x, y, z, що будуть введені з клавіатури, другий - для трьох констант, що вибрані нами випадково, а третій - для деяких виразів (наприклад, знайти максимум модулів трьох чисел). Це робиться з навчальною метою, щоб показати, що у якості фактичних параметрів можуть бути не тільки змінні, а й константи або вирази (Зверніть увагу учнів на те, що константами або виразами фактичні параметри можуть бути тільки в тому випадку, коли відповідні формальні параметри являються параметрами-значеннями. Якщо ж формальний параметр є параметром-змінною, то відповідний фактичний параметр теж повинен бути змінною).

З урахуванням всього вище сказаного, програма, що виконує запропонований алгоритм, має наступний вигляд:

Program Example_4;

Uses crt; {Підключення бібліотеки}

Function Max2 (a,b:real):real;

begin

if a > b

then Max2:=a

else Max2:=b;

end;

Function Max3 (a,b,c:real):real;

Var Max:real;

Begin

Max:=Max2(a,b);

Max3:=Max2(Max,c);

End;

Var x,y,z,Rezultat:real;

Begin

Clrscr;

writeln  ('Введіть три довільні числа: ');

readln (x,y,z);

Rezultat:=Max3(x,y,z);

Rezultat:=Rezultat+Max3(2,-4.5,12.54);

Rezultat:=Rezultat+Max3(abs(x),abs(y),abs(z));

writeln  ('Результат -> ',Rezultat:8:2);

Readkey;

End.

Зверніть увагу ще на те, що функція Max2 за умовою може бути вкладеною у функцію Max3 (так як в даному випадку використовується тільки нею). Тому оформлення функцій можна було виконати і так:

Function Max3 (a,b,c:real):real;

Function Max2 (k,l:real):real;

begin

if k > l

then Max2:=k

else Max2:=l;

end;

Var Max:real;

Begin

Max:=Max2(a,b);

Max3:=Max2(Max,c);

End;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]