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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2016, 20:20   #1
furgingerbread
Пользователь
 
Регистрация: 14.11.2016
Сообщений: 12
По умолчанию Delphi 7 Не выводится значение в таблицу

Доброго времени суток.

Задача: написать программу, которая включает в себя табулирование функции и численное интегрирование с выводом графика функции и результатов в таблицу.

Проблема: при нажатии кнопки "Выполнить" таблица остается пуста и графика тоже нет.

Подскажите, как сделать так, чтобы полученные значения выводились в таблицу и строился график?

Спасибо.

Код:
unit RGR;

interface

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


type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    StringGrid1: TStringGrid;
    Chart1: TChart;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;


    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Edit3Change(Sender: TObject);
    procedure Edit4Change(Sender: TObject);
    procedure Edit5Change(Sender: TObject);
    procedure Edit6Change(Sender: TObject);
    procedure Edit7Change(Sender: TObject);
    procedure Edit8Change(Sender: TObject);
    procedure Edit9Change(Sender: TObject);
    procedure Edit10Change(Sender: TObject);
    procedure Edit11Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var N:integer;
 const Nmax = 20;
 type
   Tmy = Array[1..Nmax, 1..Nmax] of Extended;
   Tmx = Array[1..Nmax] of Extended;
 var
 Ax,Mx: Tmx;
 My: Tmy;
 Xn,Dx,B,C,D,Eps,An, Ak, Da: Extended;
 J,K,Km,Err:Integer;
 sA: string;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text:=''; Edit2.Text:='';
Edit3.Text:=''; Edit4.Text:='';
Edit5.Text:='';Edit6.Text:='';
Edit7.Clear;Edit8.Clear;Edit9.Clear;
Edit10.Clear; Edit1.SetFocus;
end;
procedure FreeStringGrid1; // очистка ячеек StringGrit1
var
I, J: integer;
begin
 for I:=0 to 20 do
  begin
   for J:=1 to 20 do
     begin
       Form1.StringGrid1.Cells[I,J]:='';
     end;
   end;
end;


procedure TForm1.Button1Click(Sender: TObject);
// численное интегрирование
procedure ChisInt(C, D, Eps: Extended; var B: Extended; Km : integer; var Err, K :integer);
var i, j: integer;
Y1, Yn, S4, S2, h, Del, int1, x: extended;
function F(X: Extended): Extended;
begin
F:=sqr(x)*ln(x);
end;
begin
Y1:= F(C);
Yn:= F(D);
Int1:=0;
K:= 2;
Err:= 1;
J:=1;

 while(J<=Km) do
  begin
  h:=(D - C)/k;
  X:= C + H;
  B:=0;
  I:=1;
  S4:=0;
  S2:= 0;
  end;
  repeat
  if ODD(I) then
  S4:=S4 + F(x)
  else
  S2:= S2+F(x);
 B:= 4*S4 + 2*S2;
 x:= x + H;
 I:= I + 1;
 until (I >= K);
 B:=(Y1 + YN + B)* H/3;
 Del:= abs(Int1 - B);
 If (Del < Eps) then
 begin
 Int1:= B;
 K:= K*2
 end
 else
 begin
 J:= Km;
 Err:= Err - 1;
 end;
 J:= J + 1;
end;
procedure Tab(B, Xn, Dx, An, Ak, Da: Extended; N: Integer; var Err: integer;
var Mx, Ax:Tmx; var My:Tmy);   // табулирование функции
var
I,J: integer;
X, Y, A: Extended;

begin
   I:= 1;
   A:= An;
   Err:= 1;
 while(A <= Ak) do
 begin
 X:=Xn;
 for J:= 1 to N do
   begin
     if X <> 0 then
      begin
       Y:= A*exp(-b*x)*(cos(0.5*x) - 3*sin(2*x))/(6*x);
       My[J,I]:= Y
       end
      else
       begin
       Err:= Err - 1;
       end;
      Mx[I]:= X;
      Inc(I);
      X:= X + Dx;
      end;
      Ax[I]:= A;
      A:= A + Da;
      Inc(I);
   end;
end;
procedure Error;  // Процедура для вывода ошибок в таблице StringGrid1
 var
 I, J: integer;
begin
 for J:=0 to N do
  begin
   for I:=0 to N do
     begin
       StringGrid1.Cells[J, I]:='Error';
     end;
   end;
end;
// Процедура вывода результата
procedure RezOut(var Mx, Ax: Tmx; var My: Tmy);
var
 I,J:integer;
 A: Tmx;
begin
 for I:= 0 to N do
  begin
   StringGrid1.Cells[I,0]:=('A['+IntToStr(I)+']='+FloatToStr(A[I]));
   Form1.Chart1.Series[0].Clear;
   for J:=0 to K do
    begin
     if(StringGrid1.ColCount < J + 1) then
      StringGrid1.ColCount:=StringGrid1.ColCount + 1;
       StringGrid1.Cells[0,J]:=('X['+IntToStr(J)+']='+FloatToStr(Mx[J]));
       Form1.Chart1.Series[0].AddXY(Mx[J],My[I,J]);
      StringGrid1.Cells[I,J]:=FloatToStrF(My[I,J],ffGeneral,6,5);
    end;
    if(StringGrid1.RowCount < I) then
       StringGrid1.RowCount:=StringGrid1.RowCount +1;
 end;
end;

begin
 Err:= 0;
 // исходные данные для интегрирования
C:=StrToFloat(Edit2.Text);
D:=StrToFloat(Edit3.Text);
Km:=StrToInt(Edit5.Text);
// исходные данные для табулирования
Xn:= StrToFloat(Edit6.Text);
Dx:= StrToFloat(Edit8.Text);
N:= StrToInt(Edit7.Text);

// формирование заголовков таблицы
StringGrid1.Cells[0,0]:='N';
StringGrid1.Cells[1,0]:='A';
// Очистка ячеек StringGrid
FreeStringGrid1;
// вызов ПП ChisInt
ChisInt(C, D, Eps, B, Km, Err, K);
begin
If Err <> 0 then
Edit11.Text:='Error';
end;
 // вызов ПП Tab
 Tab(B, Xn, Dx, An, Ak, Da, N, Err, Mx, Ax, My);
 Error();
  K:= trunc((Ak - An)/Da +1);
 RezOut(Mx, Ax, My);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
C:=StrToInt(Edit1.Text);
end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
D:=StrToInt(Edit2.Text);
end;

procedure TForm1.Edit3Change(Sender: TObject);
begin
Km:=StrToInt(Edit3.Text);
end;

procedure TForm1.Edit4Change(Sender: TObject);
begin
Eps:=StrToFloat(Edit4.Text);
end;

procedure TForm1.Edit5Change(Sender: TObject);
begin
Xn:=StrToInt(Edit5.Text);
end;

procedure TForm1.Edit6Change(Sender: TObject);
begin
N:=StrToInt(Edit6.Text);
end;

procedure TForm1.Edit7Change(Sender: TObject);
begin
Dx:=StrToInt(Edit7.Text);
end;

procedure TForm1.Edit8Change(Sender: TObject);
begin
An:=StrToFloat(Edit8.Text);
end;

procedure TForm1.Edit9Change(Sender: TObject);
begin
Ak:=StrToFloat(Edit9.Text);
end;

procedure TForm1.Edit10Change(Sender: TObject);
begin
Da:=StrToFloat(Edit10.Text);
end;

procedure TForm1.Edit11Change(Sender: TObject);
begin
B:=StrToInt(Edit11.Text);
end;



end.
furgingerbread вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Python:из функции не выводится значение Борис_017 Python 1 20.10.2016 16:16
При биндинге ComboBox выводится не то значение Notan1310 WPF, UWP, WinRT, XAML 3 17.12.2015 18:01
Почему выводится такое значение? (Си) Vimork Помощь студентам 7 05.01.2014 23:40
Сохранить значение из списка в таблицу Botanik1987 Microsoft Office Access 14 13.04.2010 18:17