Вопрос задан 14.07.2023 в 05:40. Предмет Информатика. Спрашивает Майор Арнұр.

Программа не работает, когда я ввожу число, которого нет в массиве. Пишет: индекс находится вне

границ массива. Как это исправить? Вот задание: Уровень 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.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Попов Кирилл.

Ответ:

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) выполняется всегда, поэтому оно вообще не нужно

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Проблема в вашей программе заключается в неправильной проверке условия в цикле while. Для исправления этой проблемы измените условие в цикле while и добавьте переменную, которая будет отслеживать, был ли найден элемент равный X. Вот исправленный код:

pascal
const N = 10; var A: array[1..N] of integer; i, X: integer; found: boolean; begin // Заполнение массива случайными числами for i := 1 to N do begin A[i] := random(21) - 10; // случайное число в диапазоне [-10, 10] write(A[i], ' '); end; writeln(); // Ввод числа X, которое нужно найти в массиве readln(X); // Поиск элемента X в массиве i := N; found := false; // Флаг для отслеживания найденного элемента while (i >= 1) do begin if A[i] = X then begin writeln('A[', i, ']=', X); found := true; // Устанавливаем флаг в true, так как элемент найден break; // Выходим из цикла, так как нам нужен только последний элемент X end; i := i - 1; end; // Если элемент не был найден, выводим сообщение об этом if not found then writeln('Не найден!'); end.

Теперь программа должна корректно обрабатывать случай, когда введённое число не найдено в массиве.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос