
Научный калькулятор
Интерфейс:
Код программы:
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, ExtCtrls, Grids, XPMan;
type
TForm5 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Edit1: TEdit;
Button15: TButton;
Button16: TButton;
Button17: TButton;
Button20: TButton;
Button21: TButton;
Button22: TButton;
Button23: TButton;
Button24: TButton;
Button25: TButton;
Button26: TButton;
Button27: TButton;
Button28: TButton;
Button29: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N31Click(Sender: TObject);
procedure N41Click(Sender: TObject);
procedure N61Click(Sender: TObject);
procedure N2101Click(Sender: TObject);
procedure N1081Click(Sender: TObject);
procedure N16101Click(Sender: TObject);
procedure N32101Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button20Click(Sender: TObject);
procedure Button21Click(Sender: TObject);
procedure Button22Click(Sender: TObject);
procedure Button23Click(Sender: TObject);
procedure Button24Click(Sender: TObject);
procedure Button25Click(Sender: TObject);
procedure Button26Click(Sender: TObject);
procedure Button27Click(Sender: TObject);
procedure Button28Click(Sender: TObject);
procedure Button29Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
Tmass=array of Real;
Tmatrix=array of Tmass;
var
Form5: TForm5;
num1,num2:real;
doit:string;
n:integer;
implementation
{$R *.dfm}
//Ну тут комментировать особенно нечего. Просто задаем команды каждой кнопке
//И отправляем ее в Edit1
procedure TForm5.Button10Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+floattostr(0);
end;
procedure TForm5.Button11Click(Sender: TObject);
begin
Edit1.Clear;
num1:=0;
num2:=0;
doit:='';
end;
procedure TForm5.Button1Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+floattostr(1);
end;
procedure TForm5.Button20Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
Edit1.Text:=floattostr(ln(num1));
end;
procedure TForm5.Button21Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
Edit1.Text:=floattostr(cos(num1));
end;
procedure TForm5.Button22Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
Edit1.Text:=floattostr(sin(num1));
end;
procedure TForm5.Button23Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
Edit1.Text:=floattostr(sin(num1)/cos(num1));
end;
procedure TForm5.Button24Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
Edit1.Text:=floattostr(cos(num1)/sin(num1));
end;
procedure TForm5.Button25Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
Edit1.Text:=floattostr(exp(num1*ln(num1)));
end;
procedure TForm5.Button2Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+floattostr(2);
end;
procedure TForm5.Button3Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+floattostr(3);
end;
procedure TForm5.Button4Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+floattostr(4);
end;
procedure TForm5.Button5Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+floattostr(5);
end;
procedure TForm5.Button6Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+floattostr(6);
end;
procedure TForm5.Button7Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+floattostr(7);
end;
procedure TForm5.Button8Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+floattostr(8);
end;
procedure TForm5.Button9Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+floattostr(9);
end;
procedure TForm5.Button13Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
doit:='плюс';
Edit1.Clear;
end;
procedure TForm5.Button14Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
doit:='минус';
Edit1.Clear;
end;
procedure TForm5.Button15Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
doit:='умножить';
Edit1.Clear;
end;
procedure TForm5.Button16Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
doit:='разделить';
Edit1.Clear;
end;
procedure TForm5.Button12Click(Sender: TObject);
begin
num2:=strtofloat(Edit1.Text);
if doit='плюс'
then Edit1.Text:=floattostr(num1+num2);
if doit='минус'
then Edit1.Text:=floattostr(num1-num2);
if doit='умножить'
then Edit1.Text:=floattostr(num1*num2);
if doit='разделить'
then if num2=0 then begin
MessageDlg('На ноль делить нельзя!!!',mtInformation,[mbok],0);end else
Edit1.Text:=floattostr(num1/num2);
if doit='степень'
then Edit1.Text:=floattostr(exp(num2*ln(num1)));
if doit='логарифм'
then Edit1.Text:=floattostr(ln(num1)/ln(num2));
num1:=0;
num2:=0;
doit:='';
end;
procedure TForm5.Button17Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+',';
end;
procedure TForm5.Button18Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
if num1<0 then begin MessageDlg('Под знаком корня не может быть отрицательное число!!!',mtInformation,[mbok],0);end
else Edit1.Text:=floattostr(sqrt(num1));
end;
procedure TForm5.N21Click(Sender: TObject);
var
b:array[1..20] of integer;
o,p,j,t:integer;
s:string;
begin
p:=strtoint(edit1.Text);
t:=2;
o:=0;
while p<>0 do begin
o:=o+1;
b[o]:=p mod t;
p:=p div t;
end;
s:='';
for j:=o downto 1 do
s:=s+chr(b[j]+48+round(b[j]/19)*7);
edit1.Text:=s;
end;
procedure TForm5.N31Click(Sender: TObject);
var
b1:array[1..20] of integer;
o1,p1,j1,t1:integer;
s1:string;
begin
p1:=strtoint(edit1.Text);
t1:=8;
o1:=0;
while p1<>0 do begin
o1:=o1+1;
b1[o1]:=p1 mod t1;
p1:=p1 div t1;
end;
s1:='';
for j1:=o1 downto 1 do
s1:=s1+chr(b1[j1]+48+round(b1[j1]/19)*7);
edit1.Text:=s1;
end;
procedure TForm5.N41Click(Sender: TObject);
var
b2:array[1..20] of integer;
o2,p2,j2,t2:integer;
s2:string;
begin
p2:=strtoint(edit1.Text);
t2:=16;
o2:=0;
while p2<>0 do begin
o2:=o2+1;
b2[o2]:=p2 mod t2;
p2:=p2 div t2;
end;
s2:='';
for j2:=o2 downto 1 do
s2:=s2+chr(b2[j2]+48+round(b2[j2]/19)*7);
edit1.Text:=s2;
end;
procedure TForm5.N61Click(Sender: TObject);
var
b3:array[1..20] of integer;
o3,p3,j3,t3:integer;
s3:string;
begin
p3:=strtoint(edit1.Text);
t3:=32;
o3:=0;
while p3<>0 do begin
o3:=o3+1;
b3[o3]:=p3 mod t3;
p3:=p3 div t3;
end;
s3:='';
for j3:=o3 downto 1 do
s3:=s3+chr(b3[j3]+48+round(b3[j3]/19)*7);
edit1.Text:=s3;
end;
procedure TForm5.N2101Click(Sender: TObject);
var
a4:array[1..20]of integer;
i4,j4,r4:integer;
s4,m4:real;
k4:string;
begin
k4:=edit1.text;
r4:=2;
s4:=0;
for i4:=length(k4) downto 1 do begin
j4:=ord(k4[i4]);
s4:=s4+(j4-48-round((j4-48)/19)*7)*exp((length(k4)-i4)*ln(r4));
end;
edit1.Text:=floattostr(s4);
end;
procedure TForm5.N1081Click(Sender: TObject);
var
a5:array[1..20]of integer;
i5,j5,r5:integer;
s5,m5:real;
k5:string;
begin
k5:=edit1.text;
r5:=8;
s5:=0;
for i5:=length(k5) downto 1 do begin
j5:=ord(k5[i5]);
s5:=s5+(j5-48-round((j5-48)/19)*7)*exp((length(k5)-i5)*ln(r5));
end;
edit1.Text:=floattostr(s5);
end;
procedure TForm5.N16101Click(Sender: TObject);
var
a6:array[1..20]of integer;
i6,j6,r6:integer;
s6,m6:real;
k6:string;
begin
k6:=edit1.text;
r6:=16;
s6:=0;
for i6:=length(k6) downto 1 do begin
j6:=ord(k6[i6]);
s6:=s6+(j6-48-round((j6-48)/19)*7)*exp((length(k6)-i6)*ln(r6));
end;
edit1.Text:=floattostr(s6);
end;
procedure TForm5.N32101Click(Sender: TObject);
var
a7:array[1..20]of integer;
i7,j7,r7:integer;
s7,m7:real;
k7:string;
begin
k7:=edit1.text;
r7:=32;
s7:=0;
for i7:=length(k7) downto 1 do begin
j7:=ord(k7[i7]);
s7:=s7+(j7-48-round((j7-48)/19)*7)*exp((length(k7)-i7)*ln(r7));
end;
edit1.Text:=floattostr(s7);
end;
procedure TForm5.Button26Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
doit:='степень';
Edit1.Clear;
end;
procedure TForm5.Button27Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
Edit1.Text:=floattostr(ln(num1)/ln(10));
end;
procedure TForm5.Button28Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
if num1=0 then begin MessageDlg('На ноль делить нельзя!!!',mtInformation,[mbok],0);end
else Edit1.Text:=floattostr(1/num1);
end;
procedure TForm5.Button29Click(Sender: TObject);
begin
num1:=strtofloat(Edit1.Text);
doit:='логарифм';
Edit1.Clear;
end;
end.