Что неправильного? По возможности подредактировать
Код:
program kal;
uses graphabc;
label 1, 2, 3, 4;
type Fun = function (x: real): real;
var
a, g, p, d, m, u: string;
i, z: real;
funs: array of Fun := (sin,cos,sqr);
function CalcIntegral(a,b: real; N: integer; f: Fun): real;
begin
Result := 0;
var x := a;
var h := (b-a)/N;
for var i:=0 to N-1 do
begin
Result += f(x);
x += h;
end;
Result *= h;
p := '+';
m := '-';
d := '/';
u := '*';
end;
var
a := new RealField('a:');
f1 := new FlowBreak;
b := new RealField('b:');
f2 := new FlowBreak;
N := new IntegerField('N:');
f3 := new FlowBreak;
tl := new TextLabel('Функция: ');
f4 := new FlowBreak;
cb := new ComboBox;
f5 := new FlowBreak(50);
s1 := new Space(20);
ok := new Button('Вычислить');
tb: TextBox;
procedure MyClick;
begin
var f := funs[cb.SelectedIndex];
var res := CalcIntegral(a.Value,b.Value,N.Value,f);
tb.AddLine(Format('Интеграл ({0},{1},{2},{3}) = {4}',a.Value,b.Value,N.Value,cb.SelectedValue,res.ToString));
end;
begin
MainForm.Title := 'Вычисление определенного интеграла';
MainForm.SetSize(500,350);
MainForm.CenterOnScreen;
mainPanel.Dock := DockStyle.Left;
mainPanel.Width := 150;
b.Value := 1;
N.Value := 10;
cb.Items.Add('sin');
cb.Items.Add('cos');
cb.Items.Add('x^2');
cb.SelectedIndex := 0;
ok.Click += MyClick;
3: writeln('1-ое число');
readln(z);
repeat
1: writeln('действие');
readln(g);
if (g = 'cos') or (g = 'sin') or (g = 'модуль') then begin
if (g = 'cos') then begin
z := cos(z);
writeln(z);
end
else if(g = 'sin') then begin
z := sin(z);
writeln(z);
end
else if (g = 'модуль') then begin
z := abs(z);
writeln(z);
end;
end
else begin
writeln('последующее число');
readln(i);
if (g = p) then
z := z + i;
if (g = m) then
z := z - i;
if (g = d) then
z := z / i;
if (g = u) then
z := z * i;
end;
writeln(z:0:2);
4:writeln('чтобы закончить введите stop,чтобы продолжить введите go.');
readln(a);
if (a <> 'stop') and (a <> 'go') then
goto 4
else
if (a = 'go') then
goto 1;
until(a = 'stop');
writeln('пока!');
writeln('для завершения работы нажмите Enter');
readln;
ParentControl := MainForm;
tb := new TextBox;
tb.Dock := DockStyle.Fill;
end;
begin
InitControls;
end;
end.
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор