zoukankan      html  css  js  c++  java
  • 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.

     

     

    运行结果截图:

     

     

     

     

    心得体会:

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

  • 相关阅读:
    [转]CentOS安装crontab及使用方法胡益兵
    Cython: CExtensions for Python
    freetds在UBUNTU下的安装
    用python写hiveclient 改善 ITeye技术网站
    Linux下连接MS Sql server 使用ODBC/FreeTDS组合(详细)_徒步旅行者的空间_百度空间
    现代软件构建系统的使用 CMake简介
    The Ex CS Grad Student: Running HQL from Python without using the Hive Standalone Server
    muduo 与 boost asio 吞吐量对比
    cmake与autoconf+automake的对比
    通过枚举返回指定字符结果[有时,好的程序就是一种规范,一种对事物的理解和认识,一种层次]
  • 原文地址:https://www.cnblogs.com/pandy/p/1329380.html
Copyright © 2011-2022 走看看