Вопрос задан 27.07.2023 в 16:19. Предмет Информатика. Спрашивает Билалов Булат.

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) : Ошибка времени выполнения: Индекс находился вне границ массива. Подскажите в чем ошибка
0 0
Перейти к ответам

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

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

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



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

Ваша ошибка возникает из-за неправильного использования переменной j во втором цикле. Вам также необходимо проверить условие (i div i = 1), потому что любое число делится на себя и результат всегда будет 1, а это условие всегда выполняется. В итоге, ваш цикл работает только с переменной i, но не делает никаких действий с массивом b.

Для решения проблемы, вы должны увеличивать значение j, когда выполняются все условия (i mod 2 = 1), (i div i = 1) и (i div 1 = i), и затем присваивать элементу b[j] значение i.

Вот исправленный код:

pascal
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; 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, чтобы убедиться, что он содержит правильные значения.

0 0

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

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

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

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