Работа с массивами
Количество чисел в массиве и максимальное число в массиве нужно задать через write или writeln
Код:
program PrgIndex;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
a: array of real; // динамический массив
count, max, index: integer; // Кол-во чисел и макс число в массиве, порядковый номер
r, rr: real; // заданное число, близкий к заданному числу элемент массива
i: integer;
begin
try
{ TODO -oUser -cConsole Main : Insert code here }
randomize;
write('Vvedide kol-vo elementov massiva: ');
readln(count);
SetLength(a, count);
write('Vvedite max chislo v massive: ');
readln(max);
for i := 0 to count - 1 do
begin
if random(10) < 5 then
a[i] := (random(max) + random) * (-1)
else
a[i] := random(max) + random;
end;
write('Vvedite zadannoe chislo: ');
readln(r);
writeln('Sozdannii massiv:');
for i := 0 to count - 1 do
write(a[i]:10:3);
rr := a[0];
index := 0;
for i := 1 to count - 1 do
if abs(a[i]-r)<abs(rr-r) then
begin
rr:= a[i];
index:=i;
end;
writeln('');
writeln('naibolee blizkoe chislo s indeksom: ',index);
readln;
except
on E: Exception do
writeln(E.ClassName, ': ', E.Message);
end;
end.
{$APPTYPE CONSOLE}
uses
SysUtils;
var
a: array of real; // динамический массив
count, max, index: integer; // Кол-во чисел и макс число в массиве, порядковый номер
r, rr: real; // заданное число, близкий к заданному числу элемент массива
i: integer;
begin
try
{ TODO -oUser -cConsole Main : Insert code here }
randomize;
write('Vvedide kol-vo elementov massiva: ');
readln(count);
SetLength(a, count);
write('Vvedite max chislo v massive: ');
readln(max);
for i := 0 to count - 1 do
begin
if random(10) < 5 then
a[i] := (random(max) + random) * (-1)
else
a[i] := random(max) + random;
end;
write('Vvedite zadannoe chislo: ');
readln(r);
writeln('Sozdannii massiv:');
for i := 0 to count - 1 do
write(a[i]:10:3);
rr := a[0];
index := 0;
for i := 1 to count - 1 do
if abs(a[i]-r)<abs(rr-r) then
begin
rr:= a[i];
index:=i;
end;
writeln('');
writeln('naibolee blizkoe chislo s indeksom: ',index);
readln;
except
on E: Exception do
writeln(E.ClassName, ': ', E.Message);
end;
end.
Если хотите, чтобы начальный элемент был первым, а не нулевым, то вывод можно написать в виде
Код:
writeln('naibolee blizkoe chislo s indeksom: ',index+1);
Плюс к этому вряд ли вы когда-нибудь увидите целое число - в основном только дробные.
Нет в программе и защиты "от дурака". Если пользователь ввел 0 элементов массива и т.п.
Но доработать, чтоб было на 10 с плюсом - домашнее задание. Надо же, чтобы и вы что-нибудь делали, а не только выдающиеся отметки получали ;)