rendered paste bodyunit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Funkcje1: TMenuItem;
Horner1: TMenuItem;
Memo1: TMemo;
Label5: TLabel;
Wyk1: TMenuItem;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Edit5: TEdit;
Edit6: TEdit;
Sinus1: TMenuItem;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Edit7: TEdit;
Edit8: TEdit;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Edit9: TEdit;
Edit10: TEdit;
Sinush1: TMenuItem;
Wyj1: TMenuItem;
procedure Horner1Click(Sender: TObject);
procedure Wyk1Click(Sender: TObject);
procedure Sinus1Click(Sender: TObject);
procedure Sinush1Click(Sender: TObject);
procedure Wyj1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type wektor=array[0..10]of single;
var a,b:wektor;
procedure horner(var a,b:wektor; var x,s:single;n:integer);
var i:integer;
begin
b[0]:=a[0];
for i:=1 to n do
b[i]:=a[i]+b[i-1]*x;
s:=b[n];
end;
function fexp(x,eps:real):real; // x – wykładnik potęgi
var
t,s:real;
k:integer;
begin
t:=1.0;
s:=t;
k:=0;
while t>eps do
begin
k:=k+1;
t:=t*x/k;
s:=s+t;
end;
fexp:=s;
end;
function fsin(x,eps:real):real;
var s,t:real;
k:integer;
begin
t:=x;
k:=1;
s:=t;
while abs(t)>(eps*abs(s)) do
begin
k:=k+2;
t:=-t*sqr(x)/(k*(k-1));
s:=s+t;
end;
fsin:=s;
end;
function fsinh(x,eps:real):real;
var s,t:real;
k:integer;
begin
t:=x;
k:=1;
s:=t;
while abs(t)>(eps*abs(s)) do
begin
k:=k+1;
t:=t*sqr(x)/((2*k-2)*(2*k-1));
s:=s+t;
end;
fsinh:=s;
end;
procedure TForm1.Horner1Click(Sender: TObject);
var c,x:single;
begin
a[0]:=strtofloat(edit1.text);
a[1]:=strtofloat(edit2.text);
a[2]:=strtofloat(edit3.text);
a[3]:=strtofloat(edit4.text);
x:=3;
horner(a,b,x,c,3);
memo1.Lines.Add(floattostr(c));
end;
procedure TForm1.Wyk1Click(Sender: TObject);
var x,eps,exp:real;
begin
x:=strtofloat(edit5.text);
eps:=strtofloat(edit6.text);
exp:=fexp(x,eps);
memo1.Lines.Add(floattostr(exp));
end;
procedure TForm1.Sinus1Click(Sender: TObject);
var x,eps,sin:real;
begin
x:=strtofloat(edit7.text);
eps:=strtofloat(edit8.text);
while x>7 do x:=x-6.283185;
while x<-7 do x:=x+6.283185;
sin:=fsin(x,eps);
memo1.Lines.Add(floattostr(sin));
end;
procedure TForm1.Sinush1Click(Sender: TObject);
var x,eps,sinh:real;
begin
x:=strtofloat(Edit9.text);
eps:=strtofloat(Edit10.text);
if x<=1 and x>=-1
begin
sinh:=fsinh(x,eps);
memo1.Lines.Add(floattostr(sinh));
end;
end;
procedure TForm1.Wyj1Click(Sender: TObject);
begin
close;
end;
end.
//for i=1 to 100 do
//x=i
//rysowanie wykresow
//form1.canvas.pixels[x.]:=clrbl;