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.

 

 

运行结果截图:

 

 

 

 

心得体会:

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

posted on 2008-11-07 23:29  pandy  阅读(1269)  评论(0编辑  收藏  举报