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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2010, 13:55   #1
nik20
 
Регистрация: 05.12.2010
Сообщений: 5
По умолчанию построитель графиков функции

есть ошибки:
1. y= x^2+1/x2 строит бред ,причем не знаю как "выколить " 0- это гипербола
2.y=exp(b*x*ln(a),чтобы b было не целое числ надо описать,как real ?
3.y=a*sin(bx +c)+в строит привильно,я думаю-получилось
4.астроид,где x=b*cos^3t;y=b*sin^3t-получилось
помогите исправить ошибки,спасибо
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    ColorDialog1: TColorDialog;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button2Click(Sender: TObject);
    procedure PaintBox1Paint(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
 
     procedure ComboBox2Change(Sender: TObject);
                             
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  i,a,b,c,d:integer; x,y,t:real;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button2Click(Sender: TObject);
begin
Repaint;
end;
 
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
with form1.PaintBox1.Canvas do begin
brush.color:=clwhite;
rectangle(0,0,500,500);
pen.width:=2;
pen.color:=clgreen;
moveto(250,0);lineto(250,500);
moveto(0,250);lineto(500,250);
moveto(240,20);lineto(250,0);lineto(260,20);
moveto(480,240);lineto(500,250);lineto(480,260);
 x:=10; y:=480;
for i:=-9 to 9 do begin
TextOut(round(x),255,IntToStr(i));
x:=x+25; end;
for i:=-9 to 9 do begin
TextOut(235,round(y),IntToStr(i));
y:=y-25; end;
TextOut (485,255,'X');
TextOut (235,5,'Y');
pen.width:=1;
for i:=1 to 500 do begin
if i mod 25=0 then begin moveto(i,0);lineto(i,500);end;end;
for i:=1 to 500 do begin
if i mod 25=0 then begin moveto(0,i);lineto(500,i);end;end;
end;
 
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=strtoint(edit1.Text);b:=strtoint(edit2.Text);c:=strtoint(edit3.Text);d:=strtoint(edit4.Text);
case form1.ComboBox1.ItemIndex of
 
   
0:with form1.PaintBox1.Canvas do begin
x:=-10;y:=(1/exp(x*ln(a)))*(-1); moveto(round(x*25)+325,round(y*25)+250);
for i:=0 to 1000 do begin
 x:=x+0.01;if x<>0 then begin y:=(1/exp(x*ln(a)))*(-1);end;
lineto(round(x*25)+325,round(y*25)+200);
end; x:=0.01;y:=(1/exp(x+ln(a)))*(-1);moveto(round(x*25)+325,round(y*25)+200);
for i:=0 to 1000 do begin
 x:=x+0.01;if x<>0 then begin y:=(1/exp(x*ln(a)))*(-1);end;
lineto(round(x*25)+325,round(y*25)+200);
end;  x:=10;y:=(1/exp(-x*ln(a))); moveto(round(x*25)+175,round(y*25)+300);
for i:=0 to 1000 do begin
 x:=x-0.01;if x<>0 then begin y:=(1/exp(-x*ln(a)));end;
lineto(round(x*25)+175,round(y*25)+300);
end; x:=-0.01;y:=(1/exp(abs(x)*ln(a)));moveto(round(x*25)+175,round(y*25)+300);
for i:=0 to 1000 do begin
 x:=x-0.01;if x<>0 then begin y:=(1/exp(abs(x)*ln(a)));end;
lineto(round(x*25)+175,round(y*25)+300);
end;
x:=10;y:=(1/exp(x*ln(a)))*(-1); textout(round(x*25),400,'1/exp(x+ln(a))');
end;
 
 
 
 
 
1:with form1.PaintBox1.Canvas do begin
x:=10 ;
y:=(exp(b*x*ln(a))*(-1));
moveto(round(x*25)+250,round(y*25)+250);
for i:=0 to 500 do begin x:=-10;
 y:=(exp(b*x*ln(a)));end;
lineto(round(x*25)+250,round(y*25)+250);
 y:=(exp(b*x*ln(a))); textout(round(x*25),400,'exp(b*x*ln(a)');
end;
 
2:with form1.PaintBox1.Canvas do begin
x:=-10;
y:=(a*sin(b*x+c)+d);
moveto(round(x*25)+250,round(y*25)+250);
for i:=-10000 to 10000 do begin
y:=((a*sin(b*x+c)+d));
lineto(round(x*25+250),round(y*25+250));x:=x+0.01;end;     x:=10;
y:=((a*sin(b*x+c)+d)); textout(round(x*25),200,'a*sin(b*x+c)+d');
                        end;
3:with form1.PaintBox1.Canvas do begin
t:=-10;
x:=(b-a)*cos(t)+a*cos(((b-a)*t)/a);y:=((b-a)*sin(t)-a*sin(((b-a)*t)/a))*(-1);
moveto(round(x*25)+250,round(y*25)+250);
for i:=-10000 to 10000 do begin
x:=(b-a)*cos(t)+a*cos(((b-a)*t)/a);y:=((b-a)*sin(t)-a*sin(((b-a)*t)/a))*(-1);
lineto(round(x*25+250),round(y*25+250));t:=t+0.01;end;
x:=(b-a)*cos(t)+a*cos(((b-a)*t)/a);y:=((b-a)*sin(t)-a*sin(((b-a)*t)/a))*(-1); textout(round(x*25),200,'astroid')
end;       end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if form1.ColorDialog1.Execute then form1.PaintBox1.Canvas.Pen.Color:=colordialog1.Color;
end;
 
 
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
case form1.ComboBox2.ItemIndex of
0:form1.PaintBox1.Canvas.Pen.Width:=1;
1:form1.PaintBox1.Canvas.Pen.Width:=2;
2:form1.PaintBox1.Canvas.Pen.Width:=3;
3:form1.PaintBox1.Canvas.Pen.Width:=4;
4:form1.PaintBox1.Canvas.Pen.Width:=5;
end;
end;
  
end.
Вложения
Тип файла: rar postroitel.rar (177.9 Кб, 19 просмотров)

Последний раз редактировалось nik20; 05.12.2010 в 19:25.
nik20 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
график функции на с koldun89 Общие вопросы C/C++ 2 25.09.2010 09:32
график функции Анюта01 Помощь студентам 6 01.04.2010 08:50
График функции russian-stalker Общие вопросы Delphi 2 30.09.2009 14:58
График функции Леха Общие вопросы Delphi 18 16.04.2007 20:50