Ну и в чем проблема? Массив динамический не знаешь как создать?
Код:
var
Y : Array Of Double;
x : Double;
begin
SetLength(Y,0);
A := StrToInt(Edit1.Text);
x := -3;
while x <= 3 Do
begin
SetLength(Y,Length(Y)+1);
Y[High(Y)] := F(A,x);
x := x + .5
end;
Далее, в зависимости от выбранного критерия используешь соотв. массив (произведение отриц. элементов):
Код:
var
I : Integer;
P : Double;
begin
P := 1;
For I := Low(Y) To High(Y) Do
If Y[i] < 0 Then P := P*Y[i]
...
Или у тебя проблема как выбрать "критерий"?
Ну так "брось" на форму радио бокс, заполни его названиями своих критериев и используй тот же case..of.