Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2011, 10:28   #1
Alexandr000006
Пользователь
 
Регистрация: 08.03.2011
Сообщений: 20
По умолчанию Можно ли задать функцию как сожержимое edit?

Можно ли задать функцию как сожержимое edit для того что бы функцию можно было менять в самой программе?


вот код проги
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, Math, ExtCtrls, TeeProcs, TeEngine, Chart, Xpman,
  Series;

type
  t1=array[0..100] of Real;
  t2=array[0..100,0..100] of Real;
  t3=array[0..100,0..100] of Integer;
  TForm1 = class(TForm)
    strngrd1: TStringGrid;
    Label1: TLabel;
    lbl1: TLabel;
    lbl2: TLabel;
    edt1: TEdit;
    edt2: TEdit;
    edt3: TEdit;
    lbl3: TLabel;
    edt4: TEdit;
    edt5: TEdit;
    edt6: TEdit;
    lbl4: TLabel;
    lbl5: TLabel;
    lbl6: TLabel;
    lbl7: TLabel;
    edt7: TEdit;
    edt8: TEdit;
    lbl8: TLabel;
    edt9: TEdit;
    btn1: TButton;
    lbl9: TLabel;
    lbl10: TLabel;
    edt10: TEdit;
    Chart1: TChart;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Series1: TLineSeries;
    procedure btn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Mx,Ma:t1;
  My:t2;
  Merr:t3;
  b,c,d,Xn,Dx,An,Ak,Da,eps:Real;
  N,Km,M:Integer;
implementation

{$R *.dfm}

function bf(x:Real):real;
begin
  bf:=Exp(-x)+x*x-2;
end;

function f(a,b,x:Real):real;
begin
  f:=(a*sin(x))/(b*sqrt(x*sqrt(10-x)));
end;




procedure solve(c,d,eps:Real;Km:Integer; var Str:Integer; var b:Real);
var i:Integer;
w,fa,fc:real;
begin
  fa:=bf(c);
  for i:=1 to Km do begin
    b:=(c+d)/2;
    fc:=bf(b);
    w:=Abs(fc);
    if w>eps then
      if fa*fc>0 then c:=b else d:=b
    else
      begin
        str:=1;
        Exit
      end;
    str:=0;
  end;
end;

procedure Tab(Mx,Ma:t1;N,M:Integer; var My:t2; var Merr:t3);
var i,j:integer;
begin
  for i:=0 to M-1 do begin
    for j:=0 to N-1 do begin
      if (Mx[j]>0) and (Mx[j]<10) then begin
        My[i,j]:=f(Ma[i],b,Mx[j]); Merr[i,j]:=0; end
      else
        Merr[i,j]:=1;
    end;
  end;


end;

procedure write(Mx,Ma:t1;N,M:Integer;My:t2;Merr:t3);
var i,j,k:Integer;
begin
  k:=1;
  for i:=0 to M-1 do begin
    for j:=0 to N-1 do begin
      Form1.strngrd1.Cells[0,k]:=FloatToStr(Ma[i]);
      Form1.strngrd1.Cells[1,k]:=FloatToStr(Mx[j]);
      if Merr[i,j]=0 then
        Form1.strngrd1.Cells[2,k]:=FloatToStr(My[i,j])
      else
        Form1.strngrd1.Cells[2,k]:='Ошибка!';


      k:=k+1;

    end;
  end;
  Form1.strngrd1.RowCount:=k;
end;

procedure TForm1.btn1Click(Sender: TObject);
var a,x:Real;
str,i:Integer;
begin
  c:=StrToFloat(edt7.text);
  d:=StrToFloat(edt8.text);
  eps:=StrToFloat(edt9.text);
  km:=StrToInt(edt10.text);
  Xn:=StrToFloat(edt1.text);
  Dx:=StrToFloat(edt2.text);
  N:=StrToInt(edt3.Text);
  An:=StrToFloat(edt4.text);
  Ak:=StrToFloat(edt5.text);
  Da:=StrToFloat(edt6.text);

x:=Xn;
for i:=0 to N-1 do begin
  Mx[i]:=x;
  x:=x+Dx;
end;

a:=An;   i:=0;
while a<=Ak do begin
  Ma[i]:=a;a:=a+Da;i:=i+1;
end;
M:=i;



solve(c,d,eps,km,str,b);
if str=1 then begin
  Tab(Mx,Ma,N,M,My,Merr);
  lbl9.Caption:='B='+FloatToStr(b);
  write(Mx,Ma,N,M,My,Merr);
end
else
  lbl9.Caption:='Ошибка при вычислении корня уравнения';


end;

procedure TForm1.FormCreate(Sender: TObject);
begin
strngrd1.Cells[0,0]:='        A';
strngrd1.Cells[1,0]:='        X';
strngrd1.Cells[2,0]:='        F(A,B,X)';

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Edt1.Clear;Edt2.Clear; Edt3.Clear; Edt4.Clear; Edt5.Clear;
Edt6.Clear;Edt1.SetFocus;
end;

procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
begin
for i:=0 to Km do
begin
series1.AddXY(i,bf(i));
end;
end;


end.

Последний раз редактировалось Alexandr000006; 08.03.2011 в 10:46.
Alexandr000006 вне форума Ответить с цитированием
Старый 08.03.2011, 10:45   #2
Cannibal
Форумчанин
 
Регистрация: 17.02.2008
Сообщений: 191
По умолчанию

Напрямую нельзя. Только если написать анализ выражения. Покопай в сторону обратной польской записи или рекурсивного спуска
Mathematicians often mix up Christmas and Halloween, because Dec.25=Oct.31.
Cannibal вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли в ворде задать какую-то функцию Гошик Microsoft Office Word 14 13.10.2010 14:38
Как можно изменить эту функцию(код)? -ushёl- Общие вопросы C/C++ 2 09.04.2010 13:07
Можно ли объявлять функцию в функции? Как в делфи... TwiX Общие вопросы C/C++ 5 28.10.2009 22:54
Можно ли как-то задать параметр появления окна на экране?? baltushka Помощь студентам 0 13.06.2009 17:37
Как задать текст в Edit в чужом окне Artem Win Api 6 14.12.2007 19:13