Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ метод прямоугольников. помогите пожалуйста

Автор: juscyfruit 19.12.2009 16:11

Необходимо написать программу для вичисления интеграллов методом прямоугольников. Проблемма в том что все данные должен вводить пользователь и функцию в том числе. Помогите пожалуйста, если знаете как.

До другого я просто не додумался:

program Integral; uses
Crt, Dos; var dx,x1,x2,e,i:real; m:string;
function Fx(x:real):real;
begin
if m='cos(x)' then Fx:=cos(x) else
if m='sin(x)' then Fx:=sin(x) else

if m='exp(x)' then Fx:=exp(x) else
if m='sqr(x)' then Fx:=sqr(x) else
if m='ln(x)' then Fx:=ln(x) else
if m='arctan(x)' then Fx:=arctan(x) else
if m='sqrt(x)' then Fx:=sqrt(x) else
writeln('neverno vvedennie dannie');
end;

procedure Rascet;
var xx1,xx2:real; c:longint;
begin writeln('------------------------------------------------');
writeln('--> metod sred.prjam.');
writeln('vsego iteracij:',round(abs(x2-x1)/e));
i:=0;
for c:=1 to round(abs(x2-x1)/e) do
begin
write('iteracijaя ',c,chr(13));
xx1:=Fx(x1+c*e);
xx2:=Fx(x1+c*e+e);
write(Fx(x1+c*e),' ');
writeln(Fx(x1+c*e+e));

i:=i+abs(xx1+xx2)/2*e;
end;
writeln('------------------------------------------------');
writeln('integral',i); end;
begin
writeln('------------------------------------------------');
writeln('vvedite dannie:');
write('f(x)=');
readln(m);
write('x (x1)=');
Readln(x1);
write('x (x2)=');
Readln(x2);
write('(e)=');
Readln(e);
Rascet;
writeln('------------------------------------------------');
readln;
end.

Автор: volvo 19.12.2009 16:20

Цитата
Помогите пожалуйста, если знаете как.
Помочь чем? Написать за тебя разбор и вычисление выражения, введенного пользователем? А в поиск зайти тебе было трудно? Искать по словам "парсер", "разбор" и "интерпретатор"