using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace 多功能计算机器
{
public class Form : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox expressBox;
private System.ComponentModel.Container components = null;
//***往下为自已定义的变量***
//定义存放运算符(包括:'+','-',...,'sin',...,'arcsin',...,'(',...等)及其特性的数据结构
public struct opTable //定义存放运算符及其优先级和单双目的结构
{
public string op; //用于存放运算符 op为oprater的简写
public int code; //用存放运算符的优先级
public char grade; //用于判断存放的运算符是单目还是双目
}
public opTable[] opchTbl=new opTable[19]; //用于存放制定好的运算符及其特性(优先级和单双目)的运算符表,其初始化在方法Initialize()中
public opTable[] operateStack=new opTable[30]; //用于存放从键盘扫描的运算符的栈
//定义优先级列表 1,2,3,4,5,6,7,8,9,
public int[]osp=new int[19]{6,6,6,6,6,6,6,6,6,6,6,5,3,3,2,2,7,0,1}; //数组中元素依次为: "sin","cos","tan","cot","arcsin","arccos","arctan","sec","csc","ln","^","*","/","+","-","(",")","" 的栈外(因为有的运算符是从右向左计算,有的是从左往右计算,用内外优先级可以限制其执行顺序)优先级
public int[]isp=new int[18]{5,5,5,5,5,5,5,5,5,5,5,4,3,3,2,2,1,1}; //数组中元素依次为: "sin","cos","tan","cot","arcsin","arccos","arctan","sec","csc","ln","^","*","/","+","-","(" ,"end" 的栈内(因为有的运算符是从右向左计算,有的是从左往右计算,用内外优先级可以限制其执行顺序)优先级
//定义存放从键盘扫描的数据的栈
public double[]dataStack=new double[30]{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//定义表态指针
public int opTop=-1; //指向存放(从键盘扫描的)运算符栈的指针
public int dataTop=-1;//指向存放(从键盘扫描的)数据栈指针
//定义存放从键盘输入的起始字符串
public string startString;
public int startTop=0;
public double variableX=0;
public double variableY=0;
const double PI=3.1415926;
int number=1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button4;
private System.Windows.Forms.Button button5;
private System.Windows.Forms.Button button6;
private System.Windows.Forms.Button button7;
private System.Windows.Forms.Button button8;
private System.Windows.Forms.Button button9;
private System.Windows.Forms.Button button10;
private System.Windows.Forms.Button button11;
private System.Windows.Forms.Button button12;
private System.Windows.Forms.Button button13;
private System.Windows.Forms.Button button14;
private System.Windows.Forms.Button button15;
private System.Windows.Forms.Button button16;
private System.Windows.Forms.Button button17;
private System.Windows.Forms.Button button18;
private System.Windows.Forms.Button button19;
private System.Windows.Forms.Button button20;
private System.Windows.Forms.Button button21;
private System.Windows.Forms.Button button22;
private System.Windows.Forms.Button button23;
private System.Windows.Forms.Button button24;
private System.Windows.Forms.Button button25;
private System.Windows.Forms.Button button26;
private System.Windows.Forms.Button button27;
private System.Windows.Forms.Button button28;
private System.Windows.Forms.Button button29;
private System.Windows.Forms.Button button30;
private System.Windows.Forms.Button button31;
private System.Windows.Forms.Button button32;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox endbox;
private System.Windows.Forms.Button button33;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox endList;
private System.Windows.Forms.Button button34;
private System.Windows.Forms.Button button35;
private System.Windows.Forms.Button button40;
public int startTopMoveCount=0;
//*******
//int x=0;
#region Windows Form Designer generated code
public Form()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#endregion
#region Windows Form Designer generated code
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.expressBox = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.button3 = new System.Windows.Forms.Button();
this.button4 = new System.Windows.Forms.Button();
this.button5 = new System.Windows.Forms.Button();
this.button6 = new System.Windows.Forms.Button();
this.button7 = new System.Windows.Forms.Button();
this.button8 = new System.Windows.Forms.Button();
this.button9 = new System.Windows.Forms.Button();
this.button10 = new System.Windows.Forms.Button();
this.button11 = new System.Windows.Forms.Button();
this.button12 = new System.Windows.Forms.Button();
this.button13 = new System.Windows.Forms.Button();
this.button14 = new System.Windows.Forms.Button();
this.button15 = new System.Windows.Forms.Button();
this.button16 = new System.Windows.Forms.Button();
this.button17 = new System.Windows.Forms.Button();
this.button18 = new System.Windows.Forms.Button();
this.button19 = new System.Windows.Forms.Button();
this.button20 = new System.Windows.Forms.Button();
this.button21 = new System.Windows.Forms.Button();
this.button22 = new System.Windows.Forms.Button();
this.button23 = new System.Windows.Forms.Button();
this.button24 = new System.Windows.Forms.Button();
this.button25 = new System.Windows.Forms.Button();
this.button26 = new System.Windows.Forms.Button();
this.button27 = new System.Windows.Forms.Button();
this.button28 = new System.Windows.Forms.Button();
this.button29 = new System.Windows.Forms.Button();
this.button30 = new System.Windows.Forms.Button();
this.button31 = new System.Windows.Forms.Button();
this.button32 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.endbox = new System.Windows.Forms.TextBox();
this.button33 = new System.Windows.Forms.Button();
this.endList = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.button34 = new System.Windows.Forms.Button();
this.button35 = new System.Windows.Forms.Button();
this.button40 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// expressBox
//
this.expressBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.expressBox.Location = new System.Drawing.Point(112, 32);
this.expressBox.Name = "expressBox";
this.expressBox.Size = new System.Drawing.Size(288, 21);
this.expressBox.TabIndex = 0;
this.expressBox.Text = "";
this.expressBox.TextChanged += new System.EventHandler(this.expressBox_TextChanged);
//
// label2
//
this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.label2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.label2.Location = new System.Drawing.Point(16, 32);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(88, 24);
this.label2.TabIndex = 6;
this.label2.Text = "请输入表达式:";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label2.Click += new System.EventHandler(this.label2_Click);
//
// button1
//
this.button1.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button1.Location = new System.Drawing.Point(216, 288);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(32, 23);
this.button1.TabIndex = 8;
this.button1.Text = "1";
this.button1.Click += new System.EventHandler(this.button1_Click_1);
//
// button2
//
this.button2.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button2.Location = new System.Drawing.Point(216, 248);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(32, 23);
this.button2.TabIndex = 9;
this.button2.Text = "4";
this.button2.Click += new System.EventHandler(this.button2_Click_1);
//
// button3
//
this.button3.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button3.Location = new System.Drawing.Point(328, 288);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(32, 23);
this.button3.TabIndex = 10;
this.button3.Text = "3";
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// button4
//
this.button4.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button4.Location = new System.Drawing.Point(272, 288);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(32, 23);
this.button4.TabIndex = 11;
this.button4.Text = "2";
this.button4.Click += new System.EventHandler(this.button4_Click);
//
// button5
//
this.button5.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button5.Location = new System.Drawing.Point(272, 248);
this.button5.Name = "button5";
this.button5.Size = new System.Drawing.Size(32, 23);
this.button5.TabIndex = 12;
this.button5.Text = "5";
this.button5.Click += new System.EventHandler(this.button5_Click);
//
// button6
//
this.button6.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button6.Location = new System.Drawing.Point(328, 248);
this.button6.Name = "button6";
this.button6.Size = new System.Drawing.Size(32, 23);
this.button6.TabIndex = 13;
this.button6.Text = "6";
this.button6.Click += new System.EventHandler(this.button6_Click);
//
// button7
//
this.button7.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button7.Location = new System.Drawing.Point(328, 208);
this.button7.Name = "button7";
this.button7.Size = new System.Drawing.Size(32, 23);
this.button7.TabIndex = 14;
this.button7.Text = "9";
this.button7.Click += new System.EventHandler(this.button7_Click);
//
// button8
//
this.button8.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button8.Location = new System.Drawing.Point(272, 208);
this.button8.Name = "button8";
this.button8.Size = new System.Drawing.Size(32, 23);
this.button8.TabIndex = 15;
this.button8.Text = "8";
this.button8.Click += new System.EventHandler(this.button8_Click);
//
// button9
//
this.button9.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button9.Location = new System.Drawing.Point(216, 208);
this.button9.Name = "button9";
this.button9.Size = new System.Drawing.Size(32, 23);
this.button9.TabIndex = 16;
this.button9.Text = "7";
this.button9.Click += new System.EventHandler(this.button9_Click);
//
// button10
//
this.button10.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button10.Location = new System.Drawing.Point(216, 328);
this.button10.Name = "button10";
this.button10.Size = new System.Drawing.Size(32, 23);
this.button10.TabIndex = 17;
this.button10.Text = "0";
this.button10.Click += new System.EventHandler(this.button10_Click);
//
// button11
//
this.button11.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button11.Location = new System.Drawing.Point(272, 328);
this.button11.Name = "button11";
this.button11.Size = new System.Drawing.Size(32, 23);
this.button11.TabIndex = 18;
this.button11.Text = "DEL";
this.button11.Click += new System.EventHandler(this.button11_Click);
//
// button12
//
this.button12.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button12.Location = new System.Drawing.Point(384, 248);
this.button12.Name = "button12";
this.button12.Size = new System.Drawing.Size(32, 23);
this.button12.TabIndex = 19;
this.button12.Text = "*";
this.button12.Click += new System.EventHandler(this.button12_Click);
//
// button13
//
this.button13.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button13.Location = new System.Drawing.Point(432, 248);
this.button13.Name = "button13";
this.button13.Size = new System.Drawing.Size(32, 23);
this.button13.TabIndex = 20;
this.button13.Text = "/";
this.button13.Click += new System.EventHandler(this.button13_Click);
//
// button14
//
this.button14.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button14.Location = new System.Drawing.Point(384, 288);
this.button14.Name = "button14";
this.button14.Size = new System.Drawing.Size(32, 23);
this.button14.TabIndex = 21;
this.button14.Text = "+";
this.button14.Click += new System.EventHandler(this.button14_Click);
//
// button15
//
this.button15.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button15.Location = new System.Drawing.Point(432, 288);
this.button15.Name = "button15";
this.button15.Size = new System.Drawing.Size(32, 23);
this.button15.TabIndex = 22;
this.button15.Text = "-";
this.button15.Click += new System.EventHandler(this.button15_Click);
//
// button16
//
this.button16.BackColor = System.Drawing.SystemColors.InactiveCaption;
this.button16.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button16.Location = new System.Drawing.Point(24, 208);
this.button16.Name = "button16";
this.button16.Size = new System.Drawing.Size(32, 23);
this.button16.TabIndex = 23;
this.button16.Text = "Sin";
this.button16.Click += new System.EventHandler(this.button16_Click);
//
// button17
//
this.button17.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button17.Location = new System.Drawing.Point(24, 248);
this.button17.Name = "button17";
this.button17.Size = new System.Drawing.Size(32, 23);
this.button17.TabIndex = 24;
this.button17.Text = "Cos";
this.button17.Click += new System.EventHandler(this.button17_Click);
//
// button18
//
this.button18.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button18.Location = new System.Drawing.Point(24, 288);
this.button18.Name = "button18";
this.button18.Size = new System.Drawing.Size(32, 23);
this.button18.TabIndex = 25;
this.button18.Text = "Tan";
this.button18.Click += new System.EventHandler(this.button18_Click);
//
// button19
//
this.button19.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button19.Location = new System.Drawing.Point(24, 328);
this.button19.Name = "button19";
this.button19.Size = new System.Drawing.Size(32, 23);
this.button19.TabIndex = 26;
this.button19.Text = "Cot";
this.button19.Click += new System.EventHandler(this.button19_Click);
//
// button20
//
this.button20.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button20.Location = new System.Drawing.Point(64, 208);
this.button20.Name = "button20";
this.button20.Size = new System.Drawing.Size(56, 23);
this.button20.TabIndex = 27;
this.button20.Text = "ArcSin";
this.button20.Click += new System.EventHandler(this.button20_Click);
//
// button21
//
this.button21.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button21.Location = new System.Drawing.Point(64, 248);
this.button21.Name = "button21";
this.button21.Size = new System.Drawing.Size(56, 23);
this.button21.TabIndex = 28;
this.button21.Text = "ArcCos";
this.button21.Click += new System.EventHandler(this.button21_Click);
//
// button22
//
this.button22.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button22.Location = new System.Drawing.Point(64, 288);
this.button22.Name = "button22";
this.button22.Size = new System.Drawing.Size(56, 23);
this.button22.TabIndex = 29;
this.button22.Text = "ArcTan";
this.button22.Click += new System.EventHandler(this.button22_Click);
//
// button23
//
this.button23.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button23.Location = new System.Drawing.Point(64, 328);
this.button23.Name = "button23";
this.button23.Size = new System.Drawing.Size(56, 23);
this.button23.TabIndex = 30;
this.button23.Text = "ArcCot";
this.button23.Click += new System.EventHandler(this.button23_Click);
//
// button24
//
this.button24.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button24.Location = new System.Drawing.Point(136, 208);
this.button24.Name = "button24";
this.button24.Size = new System.Drawing.Size(32, 23);
this.button24.TabIndex = 31;
this.button24.Text = "Sec";
this.button24.Click += new System.EventHandler(this.button24_Click);
//
// button25
//
this.button25.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button25.Location = new System.Drawing.Point(136, 248);
this.button25.Name = "button25";
this.button25.Size = new System.Drawing.Size(32, 23);
this.button25.TabIndex = 32;
this.button25.Text = "Csc";
this.button25.Click += new System.EventHandler(this.button25_Click);
//
// button26
//
this.button26.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button26.Location = new System.Drawing.Point(136, 288);
this.button26.Name = "button26";
this.button26.Size = new System.Drawing.Size(32, 23);
this.button26.TabIndex = 33;
this.button26.Text = "Ln";
this.button26.Click += new System.EventHandler(this.button26_Click);
//
// button27
//
this.button27.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
this.button27.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button27.Location = new System.Drawing.Point(320, 328);
this.button27.Name = "button27";
this.button27.Size = new System.Drawing.Size(48, 23);
this.button27.TabIndex = 34;
this.button27.Text = "次方";
this.button27.Click += new System.EventHandler(this.button27_Click);
//
// button28
//
this.button28.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button28.Location = new System.Drawing.Point(432, 208);
this.button28.Name = "button28";
this.button28.Size = new System.Drawing.Size(32, 23);
this.button28.TabIndex = 35;
this.button28.Text = ")";
this.button28.Click += new System.EventHandler(this.button28_Click);
//
// button29
//
this.button29.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button29.Location = new System.Drawing.Point(384, 208);
this.button29.Name = "button29";
this.button29.Size = new System.Drawing.Size(32, 23);
this.button29.TabIndex = 36;
this.button29.Text = "(";
this.button29.Click += new System.EventHandler(this.button29_Click);
//
// button30
//
this.button30.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
this.button30.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button30.Location = new System.Drawing.Point(384, 328);
this.button30.Name = "button30";
this.button30.Size = new System.Drawing.Size(80, 23);
this.button30.TabIndex = 37;
this.button30.Text = "==";
this.button30.Click += new System.EventHandler(this.button30_Click);
//
// button31
//
this.button31.BackColor = System.Drawing.SystemColors.InactiveCaption;
this.button31.ForeColor = System.Drawing.Color.Black;
this.button31.Location = new System.Drawing.Point(328, 168);
this.button31.Name = "button31";
this.button31.Size = new System.Drawing.Size(96, 23);
this.button31.TabIndex = 38;
this.button31.Text = "Back Space";
this.button31.Click += new System.EventHandler(this.button31_Click);
//
// button32
//
this.button32.BackColor = System.Drawing.SystemColors.InactiveCaptionText;
this.button32.ForeColor = System.Drawing.SystemColors.ControlText;
this.button32.Location = new System.Drawing.Point(432, 168);
this.button32.Name = "button32";
this.button32.Size = new System.Drawing.Size(32, 23);
this.button32.TabIndex = 39;
this.button32.Text = "CE";
this.button32.Click += new System.EventHandler(this.button32_Click);
//
// label1
//
this.label1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.label1.Location = new System.Drawing.Point(40, 72);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(64, 20);
this.label1.TabIndex = 40;
this.label1.Text = "计算结果:";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// endbox
//
this.endbox.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.endbox.Location = new System.Drawing.Point(112, 72);
this.endbox.Name = "endbox";
this.endbox.Size = new System.Drawing.Size(136, 21);
this.endbox.TabIndex = 41;
this.endbox.Text = "0.000000";
//
// button33
//
this.button33.ForeColor = System.Drawing.SystemColors.HotTrack;
this.button33.Location = new System.Drawing.Point(136, 328);
this.button33.Name = "button33";
this.button33.Size = new System.Drawing.Size(32, 23);
this.button33.TabIndex = 42;
this.button33.Text = "Л";
this.button33.Click += new System.EventHandler(this.button33_Click);
//
// endList
//
this.endList.Location = new System.Drawing.Point(112, 112);
this.endList.Multiline = true;
this.endList.Name = "endList";
this.endList.Size = new System.Drawing.Size(352, 21);
this.endList.TabIndex = 43;
this.endList.Tag = "ff";
this.endList.Text = "";
this.endList.TextChanged += new System.EventHandler(this.endList_TextChanged);
//
// label3
//
this.label3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.label3.Location = new System.Drawing.Point(40, 112);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(64, 20);
this.label3.TabIndex = 44;
this.label3.Text = "结果列表:";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label3.Click += new System.EventHandler(this.label3_Click);
//
// button34
//
this.button34.ForeColor = System.Drawing.SystemColors.ControlText;
this.button34.Location = new System.Drawing.Point(24, 168);
this.button34.Name = "button34";
this.button34.Size = new System.Drawing.Size(96, 23);
this.button34.TabIndex = 45;
this.button34.Text = "清除结果列表";
this.button34.Click += new System.EventHandler(this.button34_Click);
//
// button35
//
this.button35.Location = new System.Drawing.Point(408, 72);
this.button35.Name = "button35";
this.button35.Size = new System.Drawing.Size(56, 23);
this.button35.TabIndex = 46;
this.button35.Text = "帮助";
this.button35.Click += new System.EventHandler(this.button35_Click);
//
// button40
//
this.button40.Location = new System.Drawing.Point(408, 32);
this.button40.Name = "button40";
this.button40.Size = new System.Drawing.Size(56, 23);
this.button40.TabIndex = 54;
this.button40.Text = "重写";
this.button40.Click += new System.EventHandler(this.button40_Click);
//
// Form
//
this.AcceptButton = this.button30;
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.BackColor = System.Drawing.SystemColors.InactiveCaption;
this.ClientSize = new System.Drawing.Size(488, 390);
this.Controls.Add(this.button40);
this.Controls.Add(this.button35);
this.Controls.Add(this.button34);
this.Controls.Add(this.label3);
this.Controls.Add(this.endList);
this.Controls.Add(this.button33);
this.Controls.Add(this.endbox);
this.Controls.Add(this.label1);
this.Controls.Add(this.button32);
this.Controls.Add(this.button31);
this.Controls.Add(this.button30);
this.Controls.Add(this.button29);
this.Controls.Add(this.button28);
this.Controls.Add(this.button27);
this.Controls.Add(this.button26);
this.Controls.Add(this.button25);
this.Controls.Add(this.button24);
this.Controls.Add(this.button23);
this.Controls.Add(this.button22);
this.Controls.Add(this.button21);
this.Controls.Add(this.button20);
this.Controls.Add(this.button19);
this.Controls.Add(this.button18);
this.Controls.Add(this.button17);
this.Controls.Add(this.button16);
this.Controls.Add(this.button15);
this.Controls.Add(this.button14);
this.Controls.Add(this.button13);
this.Controls.Add(this.button12);
this.Controls.Add(this.button11);
this.Controls.Add(this.button10);
this.Controls.Add(this.button9);
this.Controls.Add(this.button8);
this.Controls.Add(this.button7);
this.Controls.Add(this.button6);
this.Controls.Add(this.button5);
this.Controls.Add(this.button4);
this.Controls.Add(this.button3);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Controls.Add(this.label2);
this.Controls.Add(this.expressBox);
this.MaximizeBox = false;
this.Name = "Form";
this.Text = "多功能计算器";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form());
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
private void Form_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
//label3.Text="X: "+e.X.ToString()+" ,Y: "+e.Y.ToString();
}
/*private void button1_Click(object sender, System.EventArgs e)
{
StartExcute();
}
private void button2_Click(object sender, System.EventArgs e)
{
Application.Exit();
}*/
private void expressBox_TextChanged(object sender, System.EventArgs e)
{
}
public void InitializeOpchTblStack() //制定运算符及其特性(优先级和单双目)的运算符表
{
//public int[]osp={6,6,6,6,6,6,6,6,6,6,6,5,3,3,2,2,7,0,1}; //数组中元素依次为: "sin","cos","tan","cot","arcsin","arccos","arctan","sec","csc","ln","^","*","/","+","-","(",")","" 的栈外(因为有的运算符是从右向左计算,有的是从左往右计算,用内外优先级可以限制其执行顺序)优先级
//public int[]isp={5,5,5,5,5,5,5,5,5,5,5,4,3,3,2,2,1,1}; //数组中元素依次为: "sin","cos","tan","cot","arcsin","arccos","arctan","sec","csc","ln","^","*","/","+","-","(","end" 的栈内(因为有的运算符是从右向左计算,有的是从左往右计算,用内外优先级可以限制其执行顺序)优先级
opchTbl[0].op="sin"; opchTbl[0].code=1; opchTbl[0].grade='s';
opchTbl[1].op="cos"; opchTbl[1].code=2; opchTbl[1].grade='s';
opchTbl[2].op="tan"; opchTbl[2].code=3; opchTbl[2].grade='s';
opchTbl[3].op="cot"; opchTbl[3].code=4; opchTbl[3].grade='s';
opchTbl[4].op="arcsin"; opchTbl[4].code=5; opchTbl[4].grade='s';
opchTbl[5].op="arccos"; opchTbl[5].code=6; opchTbl[5].grade='s';
opchTbl[6].op="arctan"; opchTbl[6].code=7; opchTbl[6].grade='s';
opchTbl[7].op="arccot"; opchTbl[7].code=8; opchTbl[7].grade='s';
opchTbl[8].op="sec"; opchTbl[8].code=9; opchTbl[8].grade='s';
opchTbl[9].op="csc"; opchTbl[9].code=10; opchTbl[9].grade='s';
opchTbl[10].op="ln"; opchTbl[10].code=11; opchTbl[10].grade='s';
opchTbl[11].op="^"; opchTbl[11].code=12; opchTbl[11].grade='d';
opchTbl[12].op="*"; opchTbl[12].code=13; opchTbl[12].grade='d';
opchTbl[13].op="/"; opchTbl[13].code=14; opchTbl[13].grade='d';
opchTbl[14].op="+"; opchTbl[14].code=15; opchTbl[14].grade='d';
opchTbl[15].op="-"; opchTbl[15].code=16; opchTbl[15].grade='d';
opchTbl[16].op="("; opchTbl[16].code=17; opchTbl[16].grade='d';
opchTbl[17].op=")"; opchTbl[17].code=18; opchTbl[17].grade='d';
opchTbl[18].op=" "; opchTbl[18].code=19; opchTbl[18].grade='d';
startString=expressBox.Text;
//将输入的运算表达式存入"起始字符串"
//dataStack.Initialize(); operateStack.Initialize();
}
public void CreterionFaction()
{
//以下为消去待扫描字符串中的所有空格字符
for(int i=0;i<startString.Length;i++)
if(startString[i].Equals(' '))
{
startString=startString.Remove(i,1);
i--;
}
//以下代码使待扫描字符串的单目('+'和'-')变为双目
if(startString.Length!=0)
if(startString[0]=='+'||startString[0]=='-')
{
startString=startString.Insert(0,"0");
}
for(int i=0;i<startString.Length-1;i++)
{
if((startString[i]=='(')&&(startString[i+1]=='-'))
startString=startString.Insert(i+1,"0");
}
startString=startString.Insert(startString.Length,")");
//将待扫描字符串字号字母转化为小写字母
startString=startString.ToLower();
**试验用语句
//label4.Text=startString;
}
public bool CheckParentthese() //检查括号是否匹配
{
int number=0;
for(int i=0;i<startString.Length-1;i++)
{
if(i=='(') number++;
if(i==')') number--;
if(number<0) return false;
}
if(number!=0)
{
return false;
}
return true;
}
public int CheckFollowCorrect() //给运算表达式分块(三角函数...算术运算符等),再根据其返回值来检验其属于哪类错误
{
string str,oldString="",newString="";
int dataCount=0,characterCount=0;
if(startString.Equals(")"))
return 0; //输入字符串为空返回值
if((startString[0]=='*')||(startString[0]=='/')||(startString[0]=='^')||(startString[0]==')'))
return 11; //首字符输入错误返回值
for(int i=0;i<startString.Length;i++)
{
if((oldString.Equals("三角函数"))&&(newString.Equals("右括号")))
return 2; //三角函数直接接右括号错误返回值
if((oldString.Equals("左括号"))&&(newString.Equals("算术运算符")))
return 3; //左括号直接接算术运算符错误返回值
if((oldString.Equals("数字序列"))&&(newString.Equals("三角函数")))
return 4; //数字序列后直接接三角函数错误返回值
if((oldString.Equals("数字序列"))&&(newString.Equals("左括号")))
return 5; //数字序列后直接接左括号错误返回值
if((oldString.Equals("算术运算符"))&&(newString.Equals("右括号")))
return 6; //算术运算符后直接接右括号错误返回值
if((oldString.Equals("右括号"))&&(newString.Equals("左括号")))
return 7; //右括号直接接左括号错误返回值
if((oldString.Equals("右括号"))&&(newString.Equals("三角函数")))
return 8; //右括号直接接三角函数错误返回值
if((oldString.Equals("数字序列"))&&(newString.Equals("数字序列")))
return 9; //数字序列后直接接'pi'/'e'或'pi'/'e'直接接数字序列错误返回值
if((oldString.Equals("算术运算符"))&&(newString.Equals("算术运算符")))
return 10; //算术运算符后直接接算术运算符错误返回值
oldString=newString;
if(i<startString.Length-5&&startString.Length>=6)
{
str=startString.Substring(i,6);
if((str.CompareTo("arcsin")==0)||(str.CompareTo("arccos")==0)||(str.CompareTo("arctan")==0)||(str.CompareTo("arccot")==0))
{
newString="三角函数";
i+=5; characterCount++;
continue;
}
}
if(i<startString.Length-2&&startString.Length>=3)
{
str=startString.Substring(i,3);
if((str.CompareTo("sin")==0)||(str.CompareTo("cos")==0)||(str.CompareTo("tan")==0)||(str.CompareTo("cot")==0)||(str.CompareTo("sec")==0)||(str.CompareTo("csc")==0))
{
newString="三角函数";
i+=2; characterCount++;
continue;
}
}
if(i<(startString.Length-1)&&(startString.Length)>=2)
{
str=startString.Substring(i,2);
if(str.CompareTo("ln")==0)
{
newString="三角函数";
i+=1; characterCount++;
continue;
}
if(str.CompareTo("pi")==0)
{
newString="数字序列";
i+=1;dataCount++;
continue;
}
}
str=startString.Substring(i,1);
if(str.Equals("^")||str.Equals("*")||str.Equals("/")||str.Equals("+")||str.Equals("-"))
{
newString="算术运算符";
characterCount++;
continue;
}
if(str.Equals("e"))
{
newString="数字序列";
dataCount++;
continue;
}
/*if(str.Equals("x"))
{
newString="数字序列";
dataCount++;
continue;
}*/
if(str.Equals("("))
{
newString="左括号";
characterCount++;
continue;
}
if(str.Equals(")"))
{
newString="右括号";
characterCount++;
continue;
}
if(Char.IsDigit(startString[i]))
{
while(Char.IsDigit(startString[i]))
{
i++;
}
if(startString[i]=='.'&&(!Char.IsDigit(startString[i+1]))&&(i+1)!=startString.Length)
return 13;
if(startString[i]=='.')
{
i++;
}
while(Char.IsDigit(startString[i]))
{
i++;
}
newString="数字序列";
i--; dataCount++;
continue;
}
return 1; //非法字符
}
if((dataCount==0&&characterCount!=0)||(startString[0]=='0'&&dataCount==1&&characterCount>1&&startString.Length!=2))
return 12;
return 100;
}
public int IsCharacterOrData(ref double num)
{
string str="";
startTop+=startTopMoveCount; startTopMoveCount=0;
int i=startTop;
if(i<startString.Length-5&&startString.Length>=6)
{
str=startString.Substring(i,6);
for(int j=4;j<=7;j++)
if(str.Equals(opchTbl[j].op))
{
startTopMoveCount=6;
return opchTbl[j].code;
}
}
if(i<startString.Length-2&&startString.Length>=3)
{
str=startString.Substring(i,3);
for(int j=0;j<10;j++)
if(str.CompareTo(opchTbl[j].op)==0)
{
startTopMoveCount=3;
return opchTbl[j].code;
}
}
if(i<(startString.Length-1)&&(startString.Length)>=2)
{
str=startString.Substring(i,2);
if(str.CompareTo("ln")==0)
{
startTopMoveCount=2;
return 11;
}
if(str.CompareTo("pi")==0)
{
startTopMoveCount=2;
num=Math.PI;
return 100;
}
}
//以下开始确认一个字符是属于什么值类型
if(i<startString.Length)
{
str=startString.Substring(i,1);
for(int j=11;j<19;j++)
{
if(str.Equals(opchTbl[j].op))
{startTopMoveCount=1;return opchTbl[j].code;}
}
if(str.CompareTo("e")==0)
{
startTopMoveCount=1; num=Math.E;
return 100;
}
/*if(str.CompareTo("x")==0)
{
startTopMoveCount=1; num=variableX;
return 100;
}*/
if(Char.IsDigit(startString[i]))
{
double temp=0,M=10; int j=i;
while(Char.IsDigit(startString[j]))
{
temp=M*temp+Char.GetNumericValue(startString[j]);
startTop++;
j++;
}
if(startString[j]=='.')
{
j++;startTop++;
}
while(Char.IsDigit(startString[j]))
{
temp+=1.0/M*Char.GetNumericValue(startString[j]);
M/=10;j++;
startTop++;
}
startTopMoveCount=0;
num=temp;
return 100;
}
}
return -1;
}
public double DoubleCount(string opString,double data1,double data2)
{ //双目运算
if(opString.CompareTo("+")==0) return (data1+data2);
if(opString.CompareTo("-")==0) return (data1-data2);
if(opString.CompareTo("*")==0) return (data1*data2);
if(opString.CompareTo("/")==0) return (data1/data2);
if(opString.CompareTo("^")==0)
{
double end=data1;
for(int i=0;i<data2-1;i++)
end*=data1;
return (end);
}
return Double.MaxValue; //定义域不对,返回
}
public double DoubleCount(string opString,double data1)
{ //单目运算
if(opString.CompareTo("sin")==0) return Math.Sin(data1);
if(opString.CompareTo("cos")==0) return Math.Cos(data1);
if(opString.CompareTo("tan")==0) return Math.Tan(data1);
if(opString.CompareTo("cot")==0) return (1/(Math.Tan(data1)));
if(opString.CompareTo("arcsin")==0)
if(-1<=data1&&data1<=1) return Math.Asin(data1);
if(opString.CompareTo("arccos")==0)
if(-1<=data1&&data1<=1) return Math.Acos(data1);
if(opString.CompareTo("arctan")==0)
if(-Math.PI/2<=data1&&data1<=Math.PI/2)return Math.Atan(data1);
if(opString.CompareTo("arccot")==0)
if(-Math.PI/2<=data1&&data1<=Math.PI/2)return (-Math.Atan(data1));
if(opString.CompareTo("sec")==0) return (1/(Math.Cos(data1)));
if(opString.CompareTo("csc")==0) return (1/(Math.Sin(data1)));
if(data1>0) if(opString.CompareTo("ln")==0) return Math.Log(data1);
return Double.MaxValue; //定义域不对
}
public bool CountValueY(ref double tempY) //方法功能为求得解
{
int type=-1; //存放正在扫描的字符串是为数字类型还是(单双目运算符)
double num=0; //如果是数据,则返回数据的值
//进栈底结束符"end"
opTop++;
operateStack[opTop].op="end"; operateStack[opTop].code=18; operateStack[opTop].grade=' ';
while(startTop<=startString.Length-1)
{
start:
type=IsCharacterOrData(ref num); //调用判断返回值类型函数
//if(type==17) ;
if(type==-1){return false;}
if(type==100)
{
dataTop=dataTop+1;
//Console.WriteLine(dataTop);
dataStack[dataTop]=num;
}
else
{
if(osp[type-1]>isp[operateStack[opTop].code-1]) //操作符进栈
{
opTop++;
operateStack[opTop].op=opchTbl[type-1].op; operateStack[opTop].code=opchTbl[type-1].code; operateStack[opTop].grade=opchTbl[type-1].grade;
}
else
{
while(osp[type-1]<=isp[operateStack[opTop].code-1]) //弹出操作符跟数据计算,并存入数据
{
if(operateStack[opTop].op.CompareTo("end")==0)//当遇到"end"结束符表示已经获得结果
{
if(dataTop==0)
{
tempY=dataStack[dataTop]; startTop=0; startTopMoveCount=0; opTop=-1; dataTop=-1;
return true;
}
else return false; //运算符和数据的个数不匹配造成的错误
}
if(operateStack[opTop].op.CompareTo("(")==0) //如果要弹出操作数为'( ',则消去左括号
{
opTop--; goto start;
}
//弹出操作码和一个或两个数据计算,并将计算结果存入数据栈
double data1,data2; opTable operate;
if(dataTop>=0) data2=dataStack[dataTop];
else return false;
operate.op=operateStack[opTop].op; operate.code=operateStack[opTop].code; operate.grade=operateStack[opTop].grade;
opTop--; //处理一次,指针必须仅且只能下移一个单位
if(operate.grade=='d')
{
if(dataTop-1>=0) data1=dataStack[dataTop-1];
else return false;
double tempValue=DoubleCount(operate.op,data1,data2);
if(tempValue!=Double.MaxValue) dataStack[--dataTop]=tempValue;
else return false;
}
if(operate.grade=='s')
{
double tempValue=DoubleCount(operate.op,data2);
if(tempValue!=Double.MaxValue)
dataStack[dataTop]=tempValue;
else return false;
}
}
//如果当前栈外操作符比栈顶的操作符优先级别高,则栈外操作符进栈
opTop++;
operateStack[opTop].op=opchTbl[type-1].op; operateStack[opTop].code=opchTbl[type-1].code; operateStack[opTop].grade=opchTbl[type-1].grade;
}
}
}
return false;
}
public void StartExcute()
{
InitializeOpchTblStack();
CreterionFaction();
if(CheckParentthese()==false)
{
MessageBox.Show("括号不匹配,请重新输入!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
switch(CheckFollowCorrect())
{
case 0: MessageBox.Show("表达式为空,请先输入表达式!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Warning); return;
case 1: MessageBox.Show("表达式中有非法字符!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); return;
case 2: MessageBox.Show("三角函数运算符与 ) 之间应输入数据或其它表达式!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); return;
case 3: MessageBox.Show("' ( ' 与算术运算符之间应输入数据或其它表达式!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); return;
case 4: MessageBox.Show("数字数列与三角函数之间应输入算术运算符或其它表达式!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); return;
case 5: MessageBox.Show("数字数列与 ' ( ' 之间应输入算术运算符或其它表达式!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); return;
case 6: MessageBox.Show("算术运算符与右括号之间应输入数据或其它表达式!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); return;
case 7: MessageBox.Show("' ) ' 与 ' ( ' 之间应输入算术运算符或其它表达式!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); return;
case 8: MessageBox.Show("' ) ' 与三角函数之间应输入算术运算符或其它表达式!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); return;
case 9: MessageBox.Show("常量 ' PI ' 或 ' E ' 或 ' X ' 与数字数据之间应输入算术运算符或其它表达式!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error);return;
case 10: MessageBox.Show("算术运算符与算术运算符之间应输入数据或其它表达式!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); return;
case 11: MessageBox.Show("表达式头部不能为' + ', ' - ' , ' * ' , ' / ' , ' ^ ' ,' ) '!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); return;
case 12: MessageBox.Show("仅有运算符号没有数字数据或数据缺少而无法计算,请输入数字数据!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); return;
case 13: MessageBox.Show("小数点后面缺少小数部分,请输入小数部分!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); return;
}
double tempY=0;
switch(CountValueY(ref tempY))
{
case false:MessageBox.Show("输入的表达式不正确或反三角函数定义域在其定义域范围之外!!!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error); return;
}
endbox.Text=tempY.ToString();//依次存档计算结果
endList.Text+="(";
endList.Text+=number;
endList.Text+="). ";
number++;
endList.Text+=endbox.Text;
endList.Text+=" ";
}
private void label4_Click(object sender, System.EventArgs e)
{
}
private void label2_Click(object sender, System.EventArgs e)
{
}
private void button30_Click(object sender, System.EventArgs e)
{
StartExcute();
}
private void button10_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button10.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button11_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,".");
expressBox.SelectionStart=expressBox.TextLength;
}
private void button27_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,"^");
expressBox.SelectionStart=expressBox.TextLength;
}
private void button1_Click_1(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button1.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button4_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button4.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button3_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button3.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button2_Click_1(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button2.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button14_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button14.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button15_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button15.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button5_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button5.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button6_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button6.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button9_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button9.Text);
expressBox.SelectionStart=expressBox.TextLength;
//expressBox.SelectionStart+=button9.Text.Length;
}
private void button8_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button8.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button7_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button7.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button12_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button12.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button13_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button13.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button29_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button29.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button28_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button28.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button16_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button16.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button20_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button20.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button17_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button17.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button21_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button21.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button24_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button24.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button18_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button18.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button22_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button22.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button25_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button25.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button19_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button19.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button23_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button23.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button26_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,button26.Text);
expressBox.SelectionStart=expressBox.TextLength;
}
private void button31_Click(object sender, System.EventArgs e)
{
if(expressBox.Text.Length>0)
expressBox.Text=expressBox.Text.Remove(expressBox.Text.Length-1,1);
}
private void button32_Click(object sender, System.EventArgs e)
{
expressBox.Text="";
endbox.Text="0.000000";
}
private void button33_Click(object sender, System.EventArgs e)
{
expressBox.SelectedText=null;
expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,"PI");
expressBox.SelectionStart=expressBox.TextLength;
}
private void button34_Click(object sender, System.EventArgs e)
{
endList.Text="";
number=1;
}
private void button35_Click(object sender, System.EventArgs e)
{
MessageBox.Show("/n/n数学常用字符表示如下:/n Л: PI/n 常量E: e或E/n CE: 清零/n/n在输入角度时直接输入角度值:/n 例如 sin30 中的30表示度数,结果为1/2./n/n请用鼠标直接点击或用键盘输入表达式./n","Help",MessageBoxButtons.OK,MessageBoxIcon.Question);
}
private void button36_Click(object sender, System.EventArgs e)
{
double temp=double.Parse(endbox.Text);
if(temp<=double.MaxValue)
{
temp=temp*Math.PI/180;
// textBox1.Text=temp.ToString();
}
}
private void button37_Click(object sender, System.EventArgs e)
{
double temp=double.Parse(endbox.Text.ToString());
temp=temp*180/Math.PI;
// textBox2.Text=temp.ToString();
}
private void button38_Click(object sender, System.EventArgs e)
{
//expressBox.Text=textBox1.Text;
// expressBox.SelectedText=null;
// expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,textBox1.Text);
// expressBox.SelectionStart=expressBox.TextLength;
}
private void button39_Click(object sender, System.EventArgs e)
{
//expressBox.Text=textBox2.Text;
// expressBox.SelectedText=null;
// expressBox.Text=expressBox.Text.Insert(expressBox.SelectionStart,textBox2.Text);
// expressBox.SelectionStart=expressBox.TextLength;
}
private void button40_Click(object sender, System.EventArgs e)
{
expressBox.Text="";
}
private void endList_TextChanged(object sender, System.EventArgs e)
{
}
private void label3_Click(object sender, System.EventArgs e)
{
}
}
}