本计算器的代码在C+builder下完成,利用了大学里面学习的后缀表达式运算的功能,本人完善了计算器后面的一部分,希望对学习数据结构的各位同学有所帮助。也希望大家将开源的精神进行到底。
//---------------------------------------------------------------------------
运算后的界面如下:
#include <dos.h>
#include <vcl.h>
#pragma hdrstop
#include "data1.h"
#include "code.h"
#include <math.h>
#include <iostream>
#include <stack>
extern "C" __declspec(dllimport) int __cdecl test();
using namespace std;
#pragma package(smart_init)
#pragma resource "*.dfm"
suff s[100];
suff suffix[1000] ;
int i=0,j=0,h=0,mn=0,left1=0,right1=0;
char input[100];
char quat[1000];
double old=NULL;
int se=0;//查看记录
TForm1 *Form1;
stack<double> qq;
int but31,but30;
char stringt[7][20]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
struct tm *ptr;
time_t lt;
char str[80];
char st[130];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{ Label3->Caption=str;
lt=time(NULL);
ptr=localtime(<);
sprintf(str,"%d/%02d/%02d %s %02d:%02d:%02d",ptr->tm_year+1900,ptr->tm_mon+1,ptr->tm_mday,stringt[ptr->tm_wday], ptr->tm_hour,ptr->tm_min,ptr->tm_sec);
}
//---------------------------------------------------------------------------
void __insert(char c)
{
input[j++]=c;
}
bool search()
{
for(i=0;i<j;i++)
if(input[i]=='.')
{return false; break;}
return true;
}
void __ins(char c)
{
quat[mn++]=c;
}
void __del()
{ double f ;
if(input!=NULL)
{
if(fabs(atof(input))>little)
f=atof(input);
else
{ s[h].k=0.0;
//ShowMessage(input); strcmp(input,"0")!=0
}
s[h].k=f;
s[h].f=NULL;
h++;
memset(input,NULL,sizeof(input));
j=0;
}
}
void __clear()
{
i=0; j=0; h=0; mn=0;
while(!qq.empty())
{
qq.pop();
}
memset(input,NULL,sizeof(input));
memset(s,NULL,sizeof(s));
memset(quat,NULL,sizeof(quat));
memset(suffix,NULL,sizeof(suffix));
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(!((j==1&&input[0]=='0')||(input[0]=='-'&&input[1]=='0'&&j==2)))
{ __insert('1') ;
Edit1->Text=input;
__ins('1') ;
Edit3->Text=quat;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{ if(!((j==1&&input[0]=='0')||(input[0]=='-'&&input[1]=='0'&&j==2)))
{
__insert('2') ;
Edit1->Text=input;
__ins('2') ;
Edit3->Text=quat;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{ if(!((j==1&&input[0]=='0')||(input[0]=='-'&&input[1]=='0'&&j==2)))
{
__insert('3') ;
Edit1->Text=input;
__ins('3') ;
Edit3->Text=quat;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{ if(!((j==1&&input[0]=='0')||(input[0]=='-'&&input[1]=='0'&&j==2)))
{
__insert('4') ;
Edit1->Text=input;
__ins('4') ;
Edit3->Text=quat; }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{ if(!((j==1&&input[0]=='0')||(input[0]=='-'&&input[1]=='0'&&j==2)))
{
__insert('5') ;
Edit1->Text=input;
__ins('5') ;
Edit3->Text=quat; }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{ if(!((j==1&