1)Определите значение переменной y после выполнения следующей программы:
program massiv;
function test(a, b: integer): integer;
var z: integerl
begin
if a>b then z:=a else z:=b;
test:=2*z+1;
end;
var y, k1, k2: integer;
begin
k1:=test(3, 7);
k2:=test(5, 2);
y:=k1+k2;
end.
2)Найдите ошибки в описании процедур и функций:
| a. function g(k:integer):0..maxint;
var i,s:0..maxint;
begin
s:=0; for i:=1 to k do s:=s+sqr(i)
end;
| b. function h(x:integer):integer;
begin
h(x):=(sqr(x)+x)/2
end;
|
| c. function m(x:integer):integer;
var i: integer;
begin
m:=0;
for i:=1 to 10 do m:=m+x*x;
end;
| d. procedure zero(a:array[1..10]
of integer);
var i: integer;
begin
for i:=1 to n do a[i]:=0;
end;
|
3)Допишите следующую программу, реализовав используемые в ней процедуры. Программа считает поэлементную сумму двух векторов. Какие параметры передаются по значению, а какие по ссылке и почему?
const
n=5; {размерность векторов}
type
vector=array[1..n] of integer;
{Реализация процедур:
ReadVector(var a:vector) -ввод вектора.
WriteVector(a:vector) -вывод вектора.
Sum(a,b:vector; var s:vector) -поэлементное суммиров. векторов,
s[i]:=a[i]+b[i]}
{Основная программа}
var
a,b, {исходные вектора}
s: vector; {сумма векторов a и b}
begin
ReadVector(a);
ReadVector(b);
Sum(a, b, s);
WriteVector(a);
WriteVector(b);
WriteVector(s);
end.
4)Напишите функцию для нахождения:
| a)максимального элемента вектора;
| b)суммы элементов вектора.
|