
Вопрос задан 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.

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

Отвечает Дяченко Таисия.
Обратите внимание на цикл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 (это допустимо)



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Да, я могу помочь вам найти ошибку в вашем коде.
Проблема в вашем коде связана с массивом b
. Вы объявили массив b
с индексами от 1
до n
, но затем вы используете переменную j
для индексации массива b
. Когда j
идет за пределы n
, возникает ошибка "Индекс находился вне границ массива", потому что вы выходите за пределы допустимых индексов массива b
.
Похоже, что вы пытаетесь скопировать элементы из массива a
в массив b
, оставив только простые числа. Вам нужно сначала найти все простые числа в массиве a
, а затем поместить их в массив b
.
Вот исправленный код:
pascalconst 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
и корректно отобразить оба массива.


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