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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2011, 20:06   #1
Vladyka1989
Новичок
Джуниор
 
Регистрация: 28.01.2011
Сообщений: 1
Восклицание Построение графика для вычислений в Delphi

Года два назад писал прогу для моделирования колебаний, но не дописал в силу обстоятельств. Теперь есть потребность доработать ее, а именно сделать так, чтоб она рисовала график, подобный тому, что в прикрепленном рисунке, но я никак не могу с этим разобраться... Помогите, пожалуйста!

Вот, собственно, код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Math, ExtCtrls;

type
  TForm1 = class(TForm)
    L_k: TLabel;
    E_k: TEdit;
    L_m: TLabel;
    E_m: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    Image1: TImage;
    Button3: TButton;
    Button2: TButton;
    PaintBox1: TPaintBox;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
 Form1: TForm1;
 k, x: real;
 m: real;
 Ep, Ek, E: real;
 code: integer;
 i: integer;
 dx: real;
 n: integer;
 s: string;
 L, F, C: integer;
 w: real;
 flag: boolean;


const
 g = 9.8;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);



begin
memo1.clear;  


  begin
  val(E_k.Text, k, code);
  val(E_m.Text, m, code);
  x:=m*g/k;
  w:= sqrt(k/m);
  E:= (m*sqr(w)*sqr(x))/2;
  s:= floattostr(x); {convert real to string}
  L:=Length(s);      
  F:=Pos(',', s);   
  C:=L-F;          
        begin
        case C of
                0: dx:=0.1;
                1: dx:=0.01;
                2: dx:=0.001;
        else    RoundTo(x,-2);
                dx:=0.001;       
        end;
        end;
  n:= 2*round(x/dx);
  x:=-x;
   Ep:=k*sqr(x)/2;
   Ek:=E-Ep;
   memo1.Lines.Add('   x              Ep              Ek');
   memo1.Lines.add('_______________________________________');
   memo1.Lines.add(Format('%6.3n    %6.4n    %6.4n' , [x, Ep, Ek]));

for i:= 1 to n do
begin
if flag then break;
  x:= x+dx;
  Ep:=k*sqr(x)/2;
  Ek:=E-Ep;
  memo1.Lines.add(Format('%6.3n    %6.4n    %6.4n' , [x, Ep, Ek]));
  Application.ProcessMessages;
end;
end;
end;


procedure TForm1.Button3Click(Sender: TObject);
begin
flag:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
flag:=false;
end;



end.
Изображения
Тип файла: gif gr.gif (3.9 Кб, 56 просмотров)
Vladyka1989 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi (Построение графика в реальном времени) Svyazist Помощь студентам 3 02.10.2012 12:48
построение графика по точкам Delphi Ilya_L Помощь студентам 1 22.11.2010 13:56
Построение графика функций (Delphi) КатюФа Помощь студентам 0 14.05.2010 19:27
Построение графика [Delphi] StudeHt Помощь студентам 7 23.12.2009 21:11
Построение графика в Delphi сер4ей Помощь студентам 0 25.04.2009 15:15