unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, MaskEdit,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
MaskEdit1: TMaskEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var // Globale Deklaration
Form1: TForm1;
cos_Tab: array [0..900] of double;
f: textfile;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject); // Tabelle erzeugen und speichern
Var s: string; // Zeichenkette
i: integer; // Laufindex
begin
assignfile(f,'cos.txt');
rewrite(f);
For i:= 0 to 900 Do
Begin
s:=floattostr(cos((i/10)*(2*Pi/360)));
writeln(f,s);
end;
closefile(f);
end;
procedure TForm1.Button2Click(Sender: TObject); // Tabelle übernehmen und in Array einlesen
Var s: string;
i: integer;
begin
assignfile(f,'cos.txt');
reset(f);
For i:=0 to 900 Do
Begin
readln(f,s);
cos_Tab[i]:=strtofloat(s);
end;
closefile(f);
end;
procedure TForm1.Button3Click(Sender: TObject); // Berechne Funktionswert
Var i,quadrant: integer;
winkel,
rad, coswert,sinwert,tanwert: double;
begin
winkel:=strtofloat(maskedit1.text);
If (winkel>360) then
showmessage ('Wert zu groß! Bitte einen Wert zwischen 0° und 360° eingeben!');
If (winkel<0) then
showmessage ('Negativer Wert! Bitte einen Wert zwischen 0° und 360° eingeben!');
rad:= (winkel*2*Pi)/360;
// Quadrantnummer aus Grenzwinkeln bestimmen
If ((winkel*10)>=0) and ((winkel*10)<=900) then
Begin
quadrant:= 1;
end;
If ((winkel*10)>900) and ((winkel*10)<=1800) then
Begin
quadrant:= 2;
end;
If ((winkel*10)>1800) and ((winkel*10)<=2700) then
Begin
quadrant:= 3;
end;
If ((winkel*10)>2700) and ((winkel*10)<=3600) then
Begin
quadrant:= 4;
end;
// Funktionsberechnung
Case quadrant of
1: begin
coswert:=cos_Tab[i];
end;
2: begin
coswert:=-cos_Tab[1800-i];
end;
3: begin
coswert:=-cos_Tab[1800+i];
end;
4: begin
coswert:=cos_Tab[3600-i];
end;
end;
// Ausgabe der Funktionswerte
label1.Caption:='Cos-Wert: '+ floattostr(coswert);
label2.Caption:='Sin-Wert: '+ floattostr(sinwert);
label3.Caption:='Tan-Wert: '+ floattostr(tanwert);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
end.