Вопрос задан 02.08.2023 в 18:06. Предмет Информатика. Спрашивает Горват Дарья.

Помогите пожалуйста: Ошибка времени выполнения: Индекс находился вне границ массива. (Не могу найти

ошибку) const n=5; var a,b:array[1..n] of integer; i,j:byte; begin for i:=1 to n do begin write('Введите ',i,'-ый(ой) эелемент массива = '); readln(a[i]); end; writeln; writeln(' Массив "А"'); for i:=1 to n do write(' |',a[i],'|'); writeln; j:=0; for i := 1 to n do begin if (b[j]>0) and (b[j] mod b[j]=0) and (b[j] mod 1 =b[j]) then begin inc(j); b[j] := a[i]; end; end; writeln; writeln(' Массив "B"'); for i := 1 to j do write(' |',a[i],'|'); writeln; end.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Дяченко Таисия.
Обратите внимание на циклfor i:=n downto p do // вставка p   for j:=1 to n+1 do     c[i+1,j]:=c[i,j];У Вас массив с описан как c:array[1..n,1..n+1] of integer;В то же время, первый индекс у Вас в цикле меняется от  n+1 до p+1 (n+1 выходит за границу), а второй - от 1 до n+1 (это допустимо)

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

Да, я могу помочь вам найти ошибку в вашем коде.

Проблема в вашем коде связана с массивом b. Вы объявили массив b с индексами от 1 до n, но затем вы используете переменную j для индексации массива b. Когда j идет за пределы n, возникает ошибка "Индекс находился вне границ массива", потому что вы выходите за пределы допустимых индексов массива b.

Похоже, что вы пытаетесь скопировать элементы из массива a в массив b, оставив только простые числа. Вам нужно сначала найти все простые числа в массиве a, а затем поместить их в массив b.

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

pascal
const n = 5; var a, b: array[1..n] of integer; i, j: byte; function IsPrime(num: integer): boolean; var k: integer; begin IsPrime := True; if num < 2 then IsPrime := False else for k := 2 to Trunc(Sqrt(num)) do if num mod k = 0 then IsPrime := False; end; begin for i := 1 to n do begin write('Введите ', i, '-ый(ой) элемент массива = '); readln(a[i]); end; writeln; writeln('Массив "А"'); for i := 1 to n do write(' |', a[i], '|'); writeln; j := 0; for i := 1 to n do begin if IsPrime(a[i]) then begin inc(j); b[j] := a[i]; end; end; writeln; writeln('Массив "B"'); for i := 1 to j do write(' |', b[i], '|'); writeln; end.

Этот код должен скопировать все простые числа из массива a в массив b и корректно отобразить оба массива.

0 0

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

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

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

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