Const n=5; var a:array[1..n] of integer; b:array[1..10000] of integer; i,j:integer; begin...

0 голосов
271 просмотров

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


Информатика (61 баллов) | 271 просмотров
Дан 1 ответ
0 голосов

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


image
(2.5k баллов)
0

Мне нужно из одного массива в другой вывести простые числа.

0

Тогда ваша строка: if (i mod 2 = 1) and (i div i = 1) and (i div 1 = i) then b[j] := i; не находит простые числа, там нужно написать подпрограмму пару строк, написать?

0

Пожалуйста, если вам не трудно)

0

ловите вашу программу

0

Спасибо огромное

0

Все отлично, только объясните, почему при выводе выводится одинаковое просто число 3-4 раза?