search points attachment profile arrow left arrow right star heart verified symbols equation arrow-down question mark check menu accountancyadministrationagriculturalalgebraallarabicartart_musicbelarusbelarus_altbiologybusinesscatalachemistrychineseeconomicsegzamenglishentrepreneurshipenvironmentethicseuskarafirst_aidfrenchgalegogeographygeologygeometrygermangrammarhealthhistoryindia_langindonesian_langinformaticsitalianjapanesekazachkazach_altkoreanlanguagelatinlawlife_scienceliteraturelogicmathematicsmusicnigerian_langother_languagesotherspedagogicsphilosophyphysical_educationphysicspoliticspsychologyreligionrpa_langrussianrussian_altsciencesecurityskillssocial_sciencesociologyspanishstatisticstechnologytourismtrafficukrainianukrainian_altukrainian_literaturewos_civilisation accountancyadministrationagriculturalalgebraall_1arabicartart_music_2belarusbelarus_altbiologybusiness_2catalachemistry_1chineseeconomicsexam_3englishentrepreneurshipenvironment_2ethicseuskarasecurity_1frenchgalegogeography_4geology_4geometrygermangrammarhealthhistoryindia-langindonesian-langinformaticsitalianjapanesekazachAsset 230koreanlanguagelatinlawlife-scienceliteraturelogic_2mathematicsmusicnigerian-langotherlanguagesother_1pedagogicsphilosophyphysical_educationphysicspoliticspsychologyreligion_1rpa-langrussianrussian_altsciencesecurity_3_mskills_1allsocial_science_5_msociologyspanishstatisticstechnologytourismtrafficukrainianukrainian_altukrainian_literaturewos_civilisation

Программа не работает, когда я ввожу число, которого нет в массиве. Пишет: индекс находится вне границ массива. Как это исправить?
Вот задание:
Уровень 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.

  • Попроси больше объяснений
  • Следить
  • Отметить нарушение
lamunat2004

Ответ

Ответ дан
mesmerizingbutterfly

Ответ:

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

Ответы и объяснения

Не тот ответ, который тебе нужен?