1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus, ExtCtrls;
type TForm1 = class(TForm) bild: TImage; MainMenu1: TMainMenu; Datei1: TMenuItem; Bearbeiten1: TMenuItem; Sc1: TMenuItem; Schnittpunkteberechnen1: TMenuItem; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Lschen1: TMenuItem; Edit4: TEdit; Edit5: TEdit; Label4: TLabel; Label5: TLabel; Label6: TLabel; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Edit9: TEdit; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Graphzeichnen1: TMenuItem; procedure Lschen1Click(Sender: TObject); procedure Graphzeichnen1Click(Sender: TObject); procedure Sc1Click(Sender: TObject); private public end;
function f(x:real):real; function g(x:real):real;
var Form1: TForm1; a,b,c,d,n,m,x,y,x2,y2:real; xb,yb,xm,ym,k,ymax,xmax:word;
implementation
{$R *.dfm}
function f(x:real):real; begin f:=a*x*x+b*x+c*x end;
function g(x:real):real; begin g:=m*x+n; end;
procedure diskriminante; begin d:=((b-m)*0,5)-(c-n); end;
procedure loeschen; begin with form1.bild.canvas do begin brush.color:=clwhite; pen.color:=clwhite; rectangle(0,0,form1.bild.width,form1.bild.height); end; end;
procedure koordinatensystem; var i :integer; begin k:=30; xm:=form1.bild.width div 2; ym:=form1.bild.height div 2; xmax:=form1.bild.width; ymax:=form1.bild.height; with form1.bild.canvas do begin moveto (10,ym); lineto (xmax-10,ym); moveto (xm,10); lineto (xm,ymax-10); font.name:='Arial'; font.size:=8; xb:=xm-5*k; for i:=-5 to 5 do begin moveto (xb,ym); lineto (xb,ym+3); textout (xb-3,ym+5,inttostr(i)); xb:=xb+k; end; yb:=ym+5*k; for i:=-5 to 5 do begin moveto (xm,yb);lineto (xm+3,yb); if i<>0 then textout (xm+5,yb-5,inttostr(i)); yb:=yb-k; end; end; end;
procedure TForm1.Lschen1Click(Sender: TObject); begin loeschen; end;
procedure TForm1.Graphzeichnen1Click(Sender: TObject); begin a:=strtofloat(edit1.text); b:=strtofloat(edit2.text); c:=strtofloat(edit3.text); m:=strtofloat(edit4.text); n:=strtofloat(edit5.text); koordinatensystem; x:=-5; repeat y:=f(x); xb:=round(xm+x*k); yb:=round(ym-y*k); bild.canvas.pixels[xb,yb]:=clblack; x:=x+0.001; until x>5 end; begin x:=-5; repeat y:=g(x); xb:=round(xm+x*k); yb:=round(ym-y*k); bild.canvas.pixels[xb,yb]:=clblack; x:=x+0.001; until x>5 end;
procedure TForm1.Sc1Click(Sender: TObject); begin close; end;
procedure TForm1.Schnittpunkteberechnen1Click(Sender: TObject); begin a:=strtofloat(edit1.text); b:=strtofloat(edit2.text); c:=strtofloat(edit3.text); m:=strtofloat(edit4.text); n:=strtofloat(edit5.text); begin if d<0 do end; begin if d=0 do x:=((-b+m)*0,5)+(sqr(((b-m)*0,5)*((b-m)*0,5)-(c-n))); y:=m*x+n; edit6.text:=floattostr(x); edit7.text:=floattostr(y); end; begin if d>0 do x:=((-b+m)*0,5)+(sqr(((b-m)*0,5)*((b-m)*0,5)-(c-n))); x2:=((-b+m)*0,5)-(sqr(((b-m)*0,5)*((b-m)*0,5)-(c-n))); y:=m*x+n; y2:=m*x2+n; edit6.text:=floattostr(x); edit7.text:=floattostr(y); edit8.text:=floattostr(x2); edit9.text:=floattostr(y2); end; end;
end. |