есть ошибки:
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.