Конечно можно и через указатель и через ссылку, смотря для чего?)
void foo(int* ptr) тогда вызов выглядит так --> foo(arr + 3)
или
void foo(int& ptr) и вызов --> foo(arr[3]) это более безопасный вариант, без доступа к соседним ячейкам памяти, без копирования, но с возможностью изменения значения в самом массиве, ну, конечно, если не использовать константность, хотя и это 100% гарантии не дает const_cast никто не отменял)) Так что думаю вам и обычной
void foo(int value)
должно хватить.
Const
n = 30;
var
a: array[1..n] of integer;
i, s: integer;
begin
Randomize;
Writeln('Исходный массив');
s := 0;
for i := 1 to n do
begin
a[i] := Random(101) - 50;
Write(a[i], ' ');
if ((i mod 2) = 1) and ((a[i] mod 2) = 0) then s := s + a[i]
end;
Writeln(#13#10, 'Сумма найденных элементов ', s)
end.
Тестовое решение:
Исходный массив
49 -39 -17 6 24 38 20 50 6 -36 -4 -7 -31 41 -8 20 32 49 -48 -47 50 48 -41 -44 -26 -11 9 38 -24 -34
Сумма найденных элементов 22
Программа:
program summa;
var a: integer;
begin
read(a);
a := a MOD 10;
write(a);
end.
Ответ на вопрос:
5