Паскаль, массивы

Паскаль, массивы.
Нужно написать программу, вычисляющую произведение только тех из N элементов массива, введенных с клавиатуры, , которые по абсолютной величине не превышают 4. (|x| = abs(x) ) . Программа, написанная мной ( прилагается ниже) не запускается, выдает ошибку на "if a then p:=p*a;" . Просьба поправить.

Program z14;
uses crt;
var i,p:integer;
a:array of integer;
begin clrscr;
read (a);
p:=1;
if a then p:=p*a;
writeln (p);
readln;
end.

  • Если а что???
  • у тебя if a обращается к массиву, а нужно к индексу массива например if a[ i ]
    так же и read (a[ i ] )
    ну ладно допустим, что майл сожрал все скобки и <> теги
    [code]
    a:=b
    [/code]
  • ну вабщето массив объявляется по другому
    a: array[1..10] of integer
    Вот так как то например!!!!
  • элементы массива должны вводиться в цикле
  • if a<4 then p:=p*a; {а в вашем варианте получается действительно что "если а=true - булева алгебра. }
    только я вот не пойму, ЧТО задает у Вас к-во введенных чисел. Поставьте условие какое-нибудь. На пример, принимать
    числа, пока не будет введена буква n
    while a<>'n' do begin
    ...тело от строки read(a) до
    ...writeln(p);
    end;
    при этом строку p:=1 вообще вынесете вверх перед вводом массива!! ! А то постоянно у Вас заединичивание p
    в цикле будет происходить