Используя описание вектора:
вектор=array[1..100]of^real
x:вектор
uses crt;
const MAX=10;
type
PVector=array[1..MAX] of ^real;
TVector=array[1..MAX] of real;
var
data: TVector;
x: PVector;
last: real;
index: integer;
//заполнение массива случайными элементами
procedure setvalues(var arr: TVector);
var i: integer;
begin
for i:=1 to MAX do
begin
arr[i]:=random(200);
arr[i]:=arr[i]-100.0;
end;
end;
//вывод исходного массива на экран
procedure printarray(var arr: TVector);
var i: integer;
begin
for i:=1 to MAX do
begin
writeln(arr[i]:3:3);
end;
end;
//присвоения элементов массива указателей на элементы массива данных
procedure setarray(var arr: TVector; var ptrarr: PVector);
var i: integer;
begin
for i:=1 to MAX do
begin
ptrarr[i]:=@arr[i];
end;
end;
//поиск последнего отрицательного элемента
procedure find(var ptrarr: PVector; var last: real; var index: integer);
var i: integer;
begin
for i:=1 to MAX do
begin
if ptrarr[i]^<0 then
begin
last:=ptrarr[i]^;
index:=i;
end;
end;
end;
begin
randomize;
clrscr;
setvalues(data);
printarray(data);
setarray(data, x);
find(x, last, index);
writeln('Last negative value:',last:3:3,' by index ',index);
readkey;
end.
|