Предмет: Информатика, автор: almazstrela

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

Ответы

Автор ответа: iolandavalerypad353
1

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

Приложения:

almazstrela: Мне нужно из одного массива в другой вывести простые числа.
iolandavalerypad353: Тогда ваша строка: if (i mod 2 = 1) and (i div i = 1) and (i div 1 = i) then b[j] := i; не находит простые числа, там нужно написать подпрограмму пару строк, написать?
almazstrela: Пожалуйста, если вам не трудно)
iolandavalerypad353: ловите вашу программу
almazstrela: Спасибо огромное
almazstrela: Все отлично, только объясните, почему при выводе выводится одинаковое просто число 3-4 раза?
Похожие вопросы
Предмет: Информатика, автор: Аноним
Предмет: Математика, автор: Некогда1