
Const n=5; var a:array[1..n] of integer; b:array[1..10000] of integer; i,j:integer; begin for
i:=1 to n do begin a[i]:=random(100); write(a[i]:4); end; for i:=1 to n do begin if (i mod 2=1) and (i div i=1) and (i div 1=i) then b[j]:=i; end; writeln(b[j]); end. Program1.pas(12) : Ошибка времени выполнения: Индекс находился вне границ массива. Подскажите в чем ошибка

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

"Ошибка времени выполнения: Индекс находился вне границ массива." В этом и есть ошибка. Какой индекс? Вот этот - j. Что с этим делать? Инициализировать j. Так как вы ничего не присвоили переменной j, то паскаль туда положил ноль. А статический массив b у вас индексируется от 1. Так понятно? Я правда, не совсем понимаю, что должна делать ваша программа, но это и не суть важно. Хотя можете объяснить что вы там ищете и что хотите вывести.





Ваша ошибка возникает из-за неправильного использования переменной j
во втором цикле. Вам также необходимо проверить условие (i div i = 1)
, потому что любое число делится на себя и результат всегда будет 1, а это условие всегда выполняется. В итоге, ваш цикл работает только с переменной i
, но не делает никаких действий с массивом b
.
Для решения проблемы, вы должны увеличивать значение j
, когда выполняются все условия (i mod 2 = 1)
, (i div i = 1)
и (i div 1 = i)
, и затем присваивать элементу b[j]
значение i
.
Вот исправленный код:
pascalConst n = 5; var a: array[1..n] of integer; b: array[1..10000] of integer; i, j: integer; begin for i := 1 to n do begin a[i] := random(100); write(a[i]:4); end; j := 0; // Инициализируем j перед использованием for i := 1 to n do begin if (i mod 2 = 1) and (i div i = 1) and (i div 1 = i) then begin j := j + 1; // Увеличиваем j перед записью значения в массив b[j] := i; // Записываем значение i в массив b end; end; // Выводим значения массива b for i := 1 to j do begin writeln(b[i]); end; end.
В этом исправленном коде, переменная j
инициализируется перед циклом и увеличивается каждый раз, когда выполняются все условия. Затем значения i
, которые соответствуют условиям, записываются в массив b
. Затем выводится содержимое массива b
, чтобы убедиться, что он содержит правильные значения.


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







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili