Здравствуйте, в данной программе я умножаю единственный элемент массива “а” на 3, полученный массив носит имя “k”. Проблема в том, что после этой операции элемент “а” тоже оказывается умноженным на три:
var
a,k:array of real;
function Mult(r:array of real; num:real):array of real;
begin
r[0]*=num;
Result:=r;
end;
begin
a:=new real[1] (1);
k:=Mult(a,3);
Writeln(a[0]);
end.
Выводится "3" Вот похожий код, где я умножаю число “a” на 3, результат присваивается “k”. В этом случае с “а” всё остаётся в порядке, выводится “1”:
var
a,k:real;
function Mult(r,num:real):real;
begin
r*=num;
Result:=r;
end;
begin
a:=1;
k:=Mult(a,3);
Writeln(a);
end.
Выходит, что в одном случае переменная “а” меняется, в другом - нет. В чём тут дело? Если же в функции первой программы создать ещё одну переменную, и провести действия “через неё”, то массив “а” не меняется, выведется “1”:
var
a,k:array of real;
function Mult(r:array of real; num:real):array of real;
var
b:array of real:=new real[1];
begin
b[0]:=r[0]*num;
Result:=b;
end;
begin
a:=new real[1] (1);
k:=Mult(a,3);
Writeln(a[0]);
end.
Заранее спасибо за разъяснение.