Использование процедур или функций - Turbo Pascal
Формулировка задачи:
Вычислить сумму элементов массива а, значения которых кратные N с использованием процедур или функций, если элементы массива определяются по формуле ai+1=(37*ai+3) mod 64. Значение а1=2;
i меняется 1-19.
Решение задачи: «Использование процедур или функций»
textual
Листинг программы
uses crt;
const m=20;
type mas=array[1..m] of integer;
function f(a:mas;n:integer):integer;
var i,s:integer;
begin
s:=0;
for i:=1 to m do
if a[i] mod n=0 then s:=s+a[i];
f:=s;
end;
var a:mas;
n,i:integer;
begin
clrscr;
writeln('Массив');
a[1]:=2;
write(a[1]:4);
for i:=2 to m do
begin
a[i]:=(37*a[i-1])mod 64;
write(a[i]:3);
end;
writeln;
repeat
write('Введите натуральное число n=');
readln(n);
until n>0;
write('Сумма кратных ',n,'=',f(a,n));
readln
end.
Объяснение кода листинга программы
- В первой части кода определяется тип данных
mas, который представляет собой массив целых чисел. - Затем определяется функция
f, которая принимает массивaи целое числоnв качестве параметров. Функция возвращает сумму всех элементов массиваa, которые кратны числуn. - Далее определяется переменная
a, которая инициализируется значением 2. - Затем выполняется цикл
for, который начинается с индекса 2 и продолжается доm. Внутри цикла каждый элемент массиваaвычисляется как(37*a[i-1])mod 64. Здесьmodобозначает операцию взятия остатка от деления. - После завершения цикла
forвыполняется вывод суммы всех элементов массиваa, которые кратны числуn. - Затем пользователю предлагается ввести натуральное число
n. - После этого выполняется цикл
repeat, который продолжается до тех пор, покаnбольше 0. - Внутри цикла пользователю предлагается ввести число
n. - После получения числа
nвыполняется вызов функцииf(a,n), чтобы получить сумму всех элементов массиваa, которые кратны числуn. - Наконец, выводится результат.