Читайте также:
|
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ExtCtrls,Math,clipbrd,UnitAbout;
type
TJournal=record
x,y,z:real;
cod:char;
end;
TForm1 = class(TForm)
bmod: TButton;
open_brace: TButton;
close_brace: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Button17: TButton;
Button18: TButton;
Button6: TButton;
B7: TButton;
B8: TButton;
B9: TButton;
B4: TButton;
B5: TButton;
B6: TButton;
B3: TButton;
B2: TButton;
B1: TButton;
B0: TButton;
Button24: TButton;
Button25: TButton;
Button26: TButton;
Button27: TButton;
Button28: TButton;
Button_Calculate: TButton;
Button30: TButton;
BSqrt: TButton;
Button1: TButton;
Edit1: TEdit;
RadioGroup1: TRadioGroup;
MainMenu1: TMainMenu;
N2: TMenuItem;
CtrlC1: TMenuItem;
CtrlV1: TMenuItem;
N_Spravka: TMenuItem;
N_invokespravka: TMenuItem;
N7: TMenuItem;
N_aboutprogram: TMenuItem;
N8: TMenuItem;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button22: TButton;
Button23: TButton;
ListBox1: TListBox;
Button19: TButton;
procedure B9Click(Sender: TObject); //процедуры ввода данных
procedure Button24Click(Sender: TObject);
procedure Button25Click(Sender: TObject);
procedure Button26Click(Sender: TObject);
procedure Button27Click(Sender: TObject);
procedure Button28Click(Sender: TObject);
procedure Button_CalculateClick(Sender: TObject);
procedure Button30Click(Sender: TObject);
procedure BSqrtClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure B0Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure open_braceClick(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure B1Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
procedure Button20Click(Sender: TObject);
procedure close_braceClick(Sender: TObject);
procedure B2Click(Sender: TObject);
procedure Button21Click(Sender: TObject);
procedure Button22Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button23Click(Sender: TObject);
procedure B3Click(Sender: TObject);
procedure B4Click(Sender: TObject);
procedure B5Click(Sender: TObject);
procedure B6Click(Sender: TObject);
procedure B7Click(Sender: TObject);
procedure B8Click(Sender: TObject);
procedure CtrlC1Click(Sender: TObject);
procedure CtrlV1Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N_invokespravkaClick(Sender: TObject);
procedure N_aboutprogramClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
const
journal_max=1000;
var
Form1: TForm1;
code: char;
op1, y, z: real;
x1, y1, z1: Integer;
mem_str,journal_str:String;
journal_array:array[1..journal_max] of TJournal;
ji:Integer;
implementation
{$R *.dfm}
procedure TForm1.B9Click(Sender: TObject); //ввод данных
begin
Edit1.Text:=Edit1.Text+'9';
end;
procedure TForm1.Button24Click(Sender: TObject); //ввод запятой
begin
Edit1.Text:=Edit1.Text+',';
end;
procedure TForm1.Button25Click(Sender: TObject);
begin
if edit1.Text<>'' then op1:=strtofloat(edit1.text);
code:= '+';
Edit1.Clear;
end;
procedure TForm1.Button26Click(Sender: TObject);
begin
if edit1.Text<>'' then op1:=strtofloat(edit1.text);
code:= '-';
Edit1.Clear;
end;
procedure TForm1.Button27Click(Sender: TObject);
begin
if edit1.Text<>'' then op1:=strtofloat(edit1.text);
code:= '*';
Edit1.Clear;
end;
procedure TForm1.Button28Click(Sender: TObject);
begin
if edit1.Text<>'' then op1:=strtofloat(edit1.text);
code:= '/';
Edit1.Clear;
end;
procedure TForm1.Button_CalculateClick(Sender: TObject); //рассчет данных и
begin //вывод в журнал событий
if edit1.Text<>'' then y:=strtofloat(edit1.text);
journal_array[ji].x:=op1;
journal_array[ji].y:=y;
journal_array[ji].cod:=code;
journal_str:=FloatToStr(op1);
journal_str:=journal_str+ code + FloatToStr(y);
ListBox1.Items.Add(journal_str);
case code of
'+': z:=op1+y;
'-': z:=op1-y;
'*': z:=op1*y;
'/': z:=op1/y;
'^': z:=Power(op1,y);
'[': z:=Trunc(op1) Mod Trunc(y);
']': z:=Trunc(op1) Div Trunc(y);
'{': z:=Power(op1,1/y);
end;
edit1.Text:=floattostr(z); // вывод в поле Edit1 значение переменной z
journal_array[ji].z:=z;
Inc(ji);
if ji=journal_max then ji:=1;
end;
procedure TForm1.Button30Click(Sender: TObject); //расчет обратного числа
begin
op1:= strtofloat(edit1.text);
z:=1/op1;
edit1.Clear;
edit1.Text:=floattostr(z);
end;
procedure TForm1.BSqrtClick(Sender: TObject); //вычисление квадратного корня
begin
op1:= strtofloat(edit1.text);
z:=Power(op1,1/2);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
procedure TForm1.Button2Click(Sender: TObject); //ввод данных
begin
op1:= strtofloat(edit1.text);
z:=(op1*(-1));
edit1.Clear;
edit1.Text:=floattostr(z);
end;
procedure TForm1.B0Click(Sender: TObject); //ввод данных
begin
Edit1.Text:=Edit1.Text+'0';
end;
procedure TForm1.Button6Click(Sender: TObject); //стирание всех данных,
op1:=0; // не занесенных в память
begin
y:=0;
z:=0;
Edit1.Clear;
end;
procedure TForm1.Button18Click(Sender: TObject); //стирание последнего
begin //введенного числа
Edit1.Text:='';
end;
procedure TForm1.Button17Click(Sender: TObject); //стирание знаков
var
st:string;
begin
st:=Edit1.Text;
delete(st,length(st),1);
Edit1.Text:=st;
if Edit1.Text='' then begin
Edit1.Text:='';
end;
end;
procedure TForm1.Button3Click(Sender: TObject); //вычисление котангенса
begin
if RadioGroup1.ItemIndex=0 then begin
op1:=(strtofloat(edit1.text)*3.141592653589793)/180;
z:=cos(op1)/sin(op1);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
if RadioGroup1.ItemIndex=1 then begin
op1:=strtofloat(edit1.text);
z:=cos(op1)/sin(op1);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
if RadioGroup1.ItemIndex=2 then begin
op1:=strtofloat(edit1.text);
z:=cos(gradtorad(op1))/sin(gradtorad(op1));
edit1.Clear;
edit1.Text:=floattostr(z);
end;
end;
procedure TForm1.Button4Click(Sender: TObject); //возведение в квадрат числа
begin
op1:= strtofloat(edit1.text);
z:=Power(op1,2);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
procedure TForm1.Button1Click(Sender: TObject); //возведение в степень числа
begin
op1:= strtofloat(edit1.text);
code:= '^';
edit1.Clear;
end;
procedure TForm1.open_braceClick(Sender: TObject);//открытие скобок
begin
op1:= strtofloat(edit1.text);
code:= '{';
edit1.Clear;
end;
procedure TForm1.Button13Click(Sender: TObject); // вызов числа из памяти
begin
mem_str:='';
mem_str:=Edit1.Text;
end;
procedure TForm1.Button5Click(Sender: TObject); //регистр последнего результата
i:Integer; //вычеслений
result:Real;
begin
result:=1;
op1:=strtofloat(edit1.text);
if (Trunc(op1) < 0) then begin
Edit1.Text:='Недопустимый ввод';
end
else if (Trunc(op1) = 0) then begin
Edit1.Text:='1';
end
else begin
for i:= 1 to Trunc(op1) do begin
result:= result * i;
end;
Edit1.Text:=FloatToStr(result);
end;
end;
procedure TForm1.Button7Click(Sender: TObject); //вычисление десятичного
begin //логарифма
op1:= strtofloat(edit1.text);
z:=log10(op1);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
procedure TForm1.B1Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'1';
end;
procedure TForm1.Button8Click(Sender: TObject);//вычисление натурального
begin //логарифма
op1:=strtofloat(edit1.text);
z:=ln(op1);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
procedure TForm1.Button14Click(Sender: TObject); //занести отображаемое
begin //число в память
if (mem_str<>'') then Edit1.Text:=mem_str else Edit1.Text:='';
end;
procedure TForm1.Button9Click(Sender: TObject); // вывод числа Pi
begin
edit1.Text:='3,141592653589793';
end;
procedure TForm1.Button10Click(Sender: TObject); //вычисление синуса
Var
rcs:Real;
begin
if RadioGroup1.ItemIndex=0 then begin
op1:=(strtofloat(edit1.text)*3.141592653589793)/180;
z:=sin(op1);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
if RadioGroup1.ItemIndex=1 then begin
op1:=strtofloat(edit1.text);
z:=sin(op1);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
if RadioGroup1.ItemIndex=2 then begin
op1:=strtofloat(edit1.text);
z:=sin(gradtorad(op1));
edit1.Clear;
edit1.Text:=floattostr(z);
end;
journal_array[ji].x:=op1;
journal_array[ji].y:=0;
journal_array[ji].cod:='0';
journal_array[ji].z:=z;
journal_str:=FloatToStr(op1);
journal_str:='sin('+journal_str+')';
ListBox1.Items.Add(journal_str);
Inc(ji);
if ji=journal_max then ji:=1;
end;
procedure TForm1.Button11Click(Sender: TObject); //вычисление косинуса
begin
if RadioGroup1.ItemIndex=0 then begin
op1:=(strtofloat(edit1.text)*3.141592653589793)/180;
z:=cos(op1);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
if RadioGroup1.ItemIndex=1 then begin
op1:=strtofloat(edit1.text);
z:=cos(op1);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
if RadioGroup1.ItemIndex=2 then begin
op1:=strtofloat(edit1.text);
z:=cos(gradtorad(op1));
edit1.Clear;
edit1.Text:=floattostr(z);
end;
journal_array[ji].x:=op1;
journal_array[ji].y:=0;
journal_array[ji].cod:='0';
journal_array[ji].z:=z;
journal_str:=FloatToStr(op1);
journal_str:='cos('+journal_str+')';
ListBox1.Items.Add(journal_str);
Inc(ji);
if ji=journal_max then ji:=1;
end;
procedure TForm1.Button19Click(Sender: TObject); // вычисление тангенса
begin
if RadioGroup1.ItemIndex=0 then begin
op1:=(strtofloat(edit1.text)*3.141592653589793)/180;
z:=sin(op1)/cos(op1);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
if RadioGroup1.ItemIndex=1 then begin
op1:=strtofloat(edit1.text);
z:=sin(op1)/cos(op1);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
if RadioGroup1.ItemIndex=2 then begin
op1:=strtofloat(edit1.text);
z:=sin(gradtorad(op1))/cos(gradtorad(op1));
edit1.Clear;
edit1.Text:=floattostr(z);
end;
journal_array[ji].x:=op1;
journal_array[ji].y:=0;
journal_array[ji].cod:='0';
journal_array[ji].z:=z;
journal_str:=FloatToStr(op1);
journal_str:='tan('+journal_str+')';
ListBox1.Items.Add(journal_str);
Inc(ji);
if ji=journal_max then ji:=1;
end;
procedure TForm1.close_braceClick(Sender: TObject); //закрытие скобок
begin
op1:= strtofloat(edit1.text);
code:= '}';
edit1.Clear;
end;
procedure TForm1.B2Click(Sender: TObject); //ввод числа 2
begin
Edit1.Text:=Edit1.Text+'2';
end;
procedure TForm1.Button21Click(Sender: TObject); //вывод числа Эйлера
Var
e:Real;
begin
e:=2.7182818284;
op1:= strtofloat(edit1.text);
z:=Power(e,op1);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
procedure TForm1.Button22Click(Sender: TObject); //Возведение в степень
begin //по основанию 10
op1:= strtofloat(edit1.text);
z:=Power(10,op1);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
procedure TForm1.Button12Click(Sender: TObject); //очистить память
begin
mem_str:='';
end;
procedure TForm1.Button23Click(Sender: TObject); //возвращает дробную часть числа с плавающей запятой
begin
op1:= strtofloat(edit1.text);
z:=Frac(op1);
edit1.Clear;
edit1.Text:=floattostr(z);
end;
procedure TForm1.B3Click(Sender: TObject); //ввод числа 3
begin
Edit1.Text:=Edit1.Text+'3';
end;
procedure TForm1.B4Click(Sender: TObject); //ввод числа 4
begin
Edit1.Text:=Edit1.Text+'4';
end;
procedure TForm1.B5Click(Sender: TObject); //ввод числа 5
begin
Edit1.Text:=Edit1.Text+'5';
end;
procedure TForm1.B6Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'6';
end;
procedure TForm1.B7Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'7';
end;
procedure TForm1.B8Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'8';
end;
procedure TForm1.CtrlC1Click(Sender: TObject); //копировать
begin
Edit1.SelectAll;
Edit1.CopyToClipboard;
end;
procedure TForm1.CtrlV1Click(Sender: TObject); //вставить
begin
Edit1.SelectAll;
Edit1.PasteFromClipboard;
end;
procedure TForm1.N8Click(Sender: TObject); //выход из приложения
begin
Form1.Close;
end;
procedure TForm1.N_invokespravkaClick(Sender: TObject); //вызов справки
begin
WinExec('hh.exe calc.htm',SW_SHOW);
end;
procedure TForm1.N_aboutprogramClick(Sender: TObject); //про программу
begin
AboutBox.Show;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ji:=1;
end;
procedure TForm1.ListBox1Click(Sender: TObject); //журнал событий
var
ind:Integer;
begin
ind:=(ListBox1.ItemIndex);
Inc(ind);
z:=journal_array[ind].z;
Edit1.Text:=FloatToStr(z);
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); //ввод с клавиатуры
begin
if key='+' then begin Button25Click(Sender);Edit1.Clear; end;
if key='-' then begin Button26Click(Sender);Edit1.Clear; end;
if key='*' then begin Button27Click(Sender);Edit1.Clear; end;
if key='/' then begin Button28Click(Sender);Edit1.Clear; end;
if key='=' then Button_CalculateClick(Sender);
end;
end.
Дата добавления: 2014-12-23; просмотров: 31 | Поможем написать вашу работу | Нарушение авторских прав |