Ниже приведены тексты одной и той же программы, записанные
на четырех языках программирования. Что будет напечатано в результате выполнения этой программы? (Рассмотрим на Паскале)
Program Task;
Uses crt;
const L = 4;
type
atype = array [1..L] of integer;
Var R : atype;
N, p : integer;
Procedure Pr1(L : integer; var R : atype );
var i,n,t : integer;
begin
for i:=1 to L do
begin
t:=(R[i] div 2)*4;
R[i]:=t mod 5;
end;
end;
Function F1 (L : integer; R: atype) : integer;
Var N, i, T : integer;
begin
N:=1;
T:=1;
for i:=1 to L do
begin
N:=N*R[i]+T;
T:=T+2;
end;
F1:=N;
end;
BEGIN
R[1]:=5; R[2]:=9; R[3]:=6; R[4]:=2;
Pr1(L, R);
N:=F1(L,R);
write(N);
writeln;
END.
Uses crt;
const L = 4;
type
atype = array [1..L] of integer;
Var R : atype;
N, p : integer;
Procedure Pr1(L : integer; var R : atype );
var i,n,t : integer;
begin
for i:=1 to L do
begin
t:=(R[i] div 2)*4;
R[i]:=t mod 5;
end;
end;
Function F1 (L : integer; R: atype) : integer;
Var N, i, T : integer;
begin
N:=1;
T:=1;
for i:=1 to L do
begin
N:=N*R[i]+T;
T:=T+2;
end;
F1:=N;
end;
BEGIN
R[1]:=5; R[2]:=9; R[3]:=6; R[4]:=2;
Pr1(L, R);
N:=F1(L,R);
write(N);
writeln;
END.
Решение:
Мы с вами имеем дело с одномерным массивом R размерностью 4, т.е. всего элементов в массиве 4.
Программа включает в себя вспомогательные алгоритмы (процедура Pr1 и функция F1).
Рассмотрим, что делает каждый их них.
(1) Процедура Pr1:
изменяет элементы массива следующим образом: берет элемент массива,
находит целую часть от деления на 2, результат умножает на 4 ( t:=(R[i] div 2)*4). Все это хранится в переменной t. Далее этому элементу массива дается новое значение - остаток от деления переменной t на 5 (R[i]:=t mod 5). Так пост/упают с каждым элементом массива.
(2) Функция F1:
подсчитывает значение переменной F1(имя самой функции). В конечном
итоге переменная F1=N. Выясним как вычисляется значение переменной N.
Изначально N=1, T=1. Рассматривается массив целых чисел R поэлементно.
Каждый раз при просмотре следующего элемента массива изменяются
переменные N и T (N:=N*R[i]+T; T:=T+2):
то, что было в переменной N умножают на элемент массива и прибавляют
значение переменной T; увеличивают значение T на 2. Цикл выполняется 4
раза для четырех элементов массива R. На выходе мы получаем переменную N
и успешно её значение присваиваем переменной F1.
Основная программа:
BEGIN
R[1]:=5; R[2]:=9; R[3]:=6; R[4]:=2;
Pr1(L, R);
N:=F1(L,R);
write(N);
writeln;
END.
R[1]:=5; R[2]:=9; R[3]:=6; R[4]:=2;
Pr1(L, R);
N:=F1(L,R);
write(N);
writeln;
END.
Формируется массив R.
i 1 2 3 4
R[i] 5 9 6 2
R[i] 5 9 6 2
Вызывается процедура Pr1 для массива R. Изменяются элементы массива (1). Рассмотрю только для 1-го элемента.
i=1, R[1]=5
t=(R[1] div 2)*4=(5 div 2)*4=2*4=8
R[1]=t mod 5=8 mod 5=3
Массив R: i 1 2 3 4
R[i] 3 1 2 4
R[i] 3 1 2 4
Вызываем функцию F1 и переменной N присваиваем значение F1 (2):
i 1 2 3 4
N 1 1*3+1=4 4*1+3=7 7*2+5=19 19*4+7=83
T 1 1+2=3 3+2=5 5+2=7 7+2=9
F1:=N, т.е. на выходе функция F1 имеет значение 83, которое в основной программе и получает переменная N.
Выводим переменную N.
Ответ: 83
Комментариев нет:
Отправить комментарий