Программа не работает, когда я ввожу число, которого нет в массиве. Пишет: индекс находится вне границ массива. Как это исправить?
Вот задание:
Уровень B. Напишите программу, которая заполняет массив из N = 10 элементов случайными числами в диапазоне [-10,10], выводит его на экран, а затем находит индекс последне-го элемента, равного введённому числу X. Программа должна вывести ответ «не найден», если в массиве таких элементов нет.
Вот программа:
const N=10;
var
A: array[1..N] of integer;
i, X: integer;
begin
for i:=1 to N do begin
A[i]:=random(21);
write(A[i],' ');
end;
writeln();
readln(X);
i:=10;
while (i<=N) and (A[i]<>X) do
i:=i-1;
if i<=N then
writeln('A[', i, ']=', X)
else
writeln('Не найден! ');
end.

Флов227монстр Флов227монстр    3   24.02.2020 14:52    0

Ответы
89043780617 89043780617  11.09.2020 18:56

A[i]:=random(20)-10;

while (i>0)

if i<>0

Объяснение

Ошибка A[i]:=random(21); Твой диапазон [0;20]

Исправление A[i]:=random(20)-10;

Дальше можно находить элемент в массиве по разному, можно просто все элементы проверить, счётчик дойдёт до нуля - программа выведет "Не найден!", если счётчик не равен нулю, значит хотя бы 1 значение х в массиве было найдено.

Ошибка while (i<=N)

Исправление while (i>0)

Ошибка if i<=N

Исправление if i<>0

Условие (i<=N) выполняется всегда, поэтому оно вообще не нужно

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика