Ошибка времени выполнения: Индекс находится вне границ массива
Написал программу но почему то выдаёт ошибку: "Ошибка времени выполнения: Индекс находился вне границ массива."
program DZ;
var D: string;
q, h, p, r: integer;
l: real;
const a:string = ('0123456789');
b:string = ('02468');
begin
repeat
p:=0;
q := 0;
repeat
writeln('Здравствуйте введите число в промежутке от 1 до 1000000');
readln(D);
l := length(D);
if ((l>5.00) and (D <> '1000000')) or (D = '0') or (D = '') then
writeln('Ввод не соответствует ожиданиям');
until ((l<=5.00) or (D = '1000000')) and (D <> '0') and (l>0);
h := round(int(l));
for t:integer:=0 to h do begin
r:=t;
if pos(D[r], a)=0 then q := q+1;
if D[r] in b then p := p+1;
end;
if q > 0 then writeln('Ввод не соответствует ожиданиям');
until q = 0;
writeln('В введённом вами числе ', p, ' четных цифр');
end.
Ответы (1 шт):
Автор решения: Rustam Kadimov
→ Ссылка
for t:integer:=0 to h do begin - здесь наверное надо уменьшить h на единицу.