Einzelnen Beitrag anzeigen

Rebel

Registriert seit: 10. Jan 2014
18 Beiträge
 
#1

Funktionsdarstellung

  Alt 17. Jan 2014, 10:26
Hallo lieber Delphi-User,

ich bin noch neu hier und muss im Fach Informatik eine Facharbeit und ein Programm zur Funktionsdarstellung von ganzrationalen Funktionen bis 4.ten Grades und von Sinusfunktionen programmieren. Mein Problem ist, dass ich wirklich nicht helle bin in diesem Fach und ein paar Ratschläge und Hilfestellungen von euch bräuchte.
Denn Quelltext den ich bis jetzt geschaffen habe, sieht folgender Maßen aus uind ich kriege es einfach nicht abgespielt
Ich finde einfach nicht den Fehler und ich hoffe ihr könnt mir helfen

Quelltext:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit3: TEdit;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
var a,b,c:real; // http://www.delphipraxis.net/128885-graph-zeichnen.html
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
with image1.Canvas do
begin
moveto(20,220); lineto(420,220); //x-Achse
moveto(220,20); lineto(220,420); //y-Achse
moveto(410,215); lineto (422,220);
lineto (410,225); //x-Pfeil
moveto(215,30); lineto (220,18);
lineto (225,30); //y-Pfeil
textout(425,225,'x'); //Beschriftung
for i:=-3 to 3 do
begin
moveto(220+50*i,215);
lineto (220+50*i,225); //x-Einteilung
moveto(215,220+50*i);
lineto (225,220+50*i); //y-Einteilung
textout(222+50*i,225,inttostr(i)); //Zahlen x-Achse
if i <> 0 then
textout (205,213+50*i,inttostr(-i)); //Zahlen y-Achse
end;
end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var i,j: integer; x,y: real;
begin

a:=strtofloat(Edit1.Text); //Eingabe
b:=strtofloat(Edit2.Text);

i:=20;
while i < 420 do
begin
i:=i+1;
x:=(i-220)/50;
y:=a*x+b;
j:=round((220-y*50));
image1.Canvas.Pixels[i,j]:=clred;
image1.Canvas.Pen.Color:=clred;
image1.Canvas.TextOut(400,42,'y=ax+b'); //Beschriftung
end;

end;



procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer; x,y:real;
begin

a:=strtofloat(Edit1.Text); //Eingabe
b:=strtofloat(Edit2.Text);
c:=strtofloat(Edit3.Text);

i:=70;
while i<420 do
begin
i:=i+1;
x:=(i-220)/50; //x skalieren
y:=a*sqr(x)+b*x+c; //Funktion y=ax²+bx+c
j:=round((220-y*50)); //j berechnen
image1.Canvas.Pixels[i,j]:=clgreen; //zeichnen

image1.Canvas.TextOut(400,100,'y=ax²+bx+c'); //Beschriftung
end;
end;

end.
  Mit Zitat antworten Zitat