Delphi第一次实验报告--简单计算器和程序

1.编写一个简单计算器

思路

1. 设置0-9数字,小数点,+,-,*,/,=按钮。

2. 为了方便获取用户输入的操作数和操作符,设置三个文本框,第一个文本框专门用于用户输入第一操作数和第二操作数,第二个文本框用于给用户输入操作符并显示,第三个文本框用于显示第一操作数和运算结果。

3. 当点击数字按钮时,第一个文本框后面连接数字。

4. 当点击操作符按钮时,作处理:将第一个文本框中显示的第一操作数移到第三个文本框,并在第二个文本框中显示操作符。对各个操作符,要考虑异常情况。

5. 输入第二个操作数后,按=时,取第一个文本框中的第一操作数,取第二个文本框中的操作符,取第三文本框中的第二操作数,运算后,将结果显示在第一文本框中。

源代码

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = 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;

Button15: TButton;

Button16: TButton;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

procedure Button3Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure Button11Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button10Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button9Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure Button16Click(Sender: TObject);

procedure Button15Click(Sender: TObject);

procedure Button14Click(Sender: TObject);

procedure Button13Click(Sender: TObject);

procedure Button12Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

a:double;

b:double;

result:double;

str:string;

c:integer=0;

implementation

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);

begin

Edit2.text:=edit2.Text+'1'

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

Edit2.text:=edit2.Text+'2'

end;

procedure TForm1.Button11Click(Sender: TObject);

begin

Edit2.text:=edit2.Text+'3'

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Edit2.text:=edit2.Text+'4'

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

Edit2.text:=edit2.Text+'5'

end;

procedure TForm1.Button10Click(Sender: TObject);

begin

Edit2.text:=edit2.Text+'6'

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Edit2.text:=edit2.Text+'7'

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

Edit2.text:=edit2.Text+'8'

end;

procedure TForm1.Button9Click(Sender: TObject);

begin

Edit2.text:=edit2.Text+'9'

end;

procedure TForm1.Button8Click(Sender: TObject);

begin

Edit2.text:=edit2.Text+'.'

end;

procedure TForm1.Button16Click(Sender: TObject);

begin

edit3.Text:='+';

if edit2.text<>'' then

edit1.text:=edit2.Text;

edit2.Text:='';

c:=1;

end;

procedure TForm1.Button15Click(Sender: TObject);

begin

edit3.Text:='-';

if edit2.text<>'' then

edit1.text:=edit2.Text;

edit2.Text:='';

c:=2;

end;

procedure TForm1.Button14Click(Sender: TObject);

begin

edit3.Text:='*';

if edit2.text<>'' then

edit1.text:=edit2.Text;

edit2.Text:='';

c:=3;

end;

procedure TForm1.Button13Click(Sender: TObject);

begin

edit3.Text:='/';

if edit2.text<>'' then

edit1.text:=edit2.Text;

edit2.Text:='';

c:=4;

end;

procedure TForm1.Button12Click(Sender: TObject);

begin

if edit1.text<>'' then

a:=strtofloat(edit1.Text);

if edit2.text<>'' then

b:=strtofloat(edit2.text);

case c of

1:result:=a+b;

2:result:=a-b;

3:result:=a*b;

4:result:=a/b;

0:result:=b;

end;

edit1.text:=floattostr(result);

edit2.text:='';

edit3.Text:='';

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

Edit2.text:=edit2.Text+'0'

end;

end.

运行截图:

心得体会:

在这次实验中我做了一个最简单的计算器,只能实现+,-,*,/功能,并设置了三个文本框来使问题更简单化,对目前市场上的计算器,基本上只有一个文本框,这个可以通过对按下操作符按钮后响应的做处理来实现.(按下操作符按钮时,使用一个变量存下第一操作数,和一个变量记录操作符)。

2.编写一个程序,读入四对数据作为四边形的四个顶点的坐标值,并确定四边形是矩形还是正方形或其它形状。

思路:

1. 由于矩形具有这么一个特性:任意两点间距离与另两个顶点间距离相等。所以对于输入的四个顶点,只要判断三组没有公共顶点的线段长度是否相等即可

2. 对于正方形,在矩形的基础上再加上一个条件:具有公共顶点的两条边长度也相等。

3. 具体实现:通过if else语句。对应于输入的不同的四对数据,可以输出以下三个信息中的一种:

1) 输入的四个点可以构成正方形。

2) 输入的四个点可以构成矩形,但不能构成正方形。

3) 输入的四个点即不能构成正方形,也不能构成矩形。

源代码:

program Project2;

{$APPTYPE CONSOLE}

uses

SysUtils;

type tposition=record

x,y:real;

end;

var p1,p2,p3,p4:tposition;

var l12,l13,l14,l23,l24,l34:real;

begin

write('请输入p1点坐标:');

read(p1.x,p1.y);

write('请输入p2点坐标:');

read(p2.x,p2.y);

write('请输入p3点坐标:');

read(p3.x,p3.y);

write('请输入p4点坐标:');

read(p4.x,p4.y);

l12:=(p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);

l13:=(p1.x-p3.x)*(p1.x-p3.x)+(p1.y-p3.y)*(p1.y-p3.y);

l14:=(p1.x-p4.x)*(p1.x-p4.x)+(p1.y-p4.y)*(p1.y-p4.y);

l23:=(p2.x-p3.x)*(p2.x-p3.x)+(p2.y-p3.y)*(p2.y-p3.y);

l24:=(p4.x-p2.x)*(p4.x-p2.x)+(p4.y-p2.y)*(p4.y-p2.y);

l34:=(p3.x-p4.x)*(p3.x-p4.x)+(p3.y-p4.y)*(p3.y-p4.y);

if(l12=l34)and (l13=l24)and(l14=l23)then

begin

if (l12=l13)then

writeln('输入的四个点可以构成正方形。');

if (l12<>l13)then

writeln('输入的四个点可以构成矩形,但不能构成正方形。');

end

else

writeln('输入的四个点即不能构成正方形,也不能构成矩形。');

readln;

readln;

end.

运行结果截图:

心得体会:

对于一个计算几何题目:一个好的算法总是占很大优势,不仅在代码长度上,有时在代码效率(包括时间,空间)等也能有很大的提高。