• 大小: 3.31MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-10
  • 语言: C/C++
  • 标签: C++计算器  MFC  

资源简介

数据结构课程设计,实验报告,C++计算器,MFC设计,内附程序,完全代码,

资源截图

代码片段和文件信息

// Calculate.cpp : implementation file
//

#include “stdafx.h“
#include “Calculator.h“
#include “Cal.h“
#include 
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#include
using namespace  std;
//堆栈类
template
class AStack
{
public:
AStack(int size){top=-1;SIZE=size;Buffer=new T[size];}
~AStack(){delete[]Buffer;};
int GetSize(){return (top+1); }
bool Pop(T &element);
bool Push(const T&element);
private:
int top;
int SIZE;
T *Buffer;
};
template
bool AStack::Pop(T &element)
{
if (-1==top)
{
return false;
}
else
{
       element=Buffer[top--];
       return true;
}
}
template
bool AStack::Push(const T&element)
{
if (top>=SIZE-1)
{
return false;
}
else
{
Buffer[++top]=element;
return true;
}
}
/////////////////////////////////////////////////////////////////////////////
// Cal

Cal::Cal()
{
m_nNumOfPoint=2;

}
Cal::Cal(int nNum)
{
if (nNum>=0)
{
m_nNumOfPoint=nNum;
}
else
m_nNumOfPoint=0;
  
}

Cal::~Cal()
{
}




/////////////////////////////////////////////////////////////////////////////
// Cal message handlers

bool Cal::CheckBehindParse(string &strD)
{
   char cTemp=0;
   const char *pc=strD.c_str();
   double v1=0;
   double v2=0;
   double r=0;
   string strTemp=““;
   const  char *beforePoint=pc;
   AStack*stk=new AStack(256);

  
   while (*pc!=0)
   {
   cTemp=*pc;
   
   if ((cTemp>=‘0‘&&cTemp<=‘9‘)||cTemp==‘.‘)
   {   
   if (cTemp==‘.‘)
   {
              if (pc-beforePoint>0)
              {
  if (*(pc-1)<‘0‘||*(pc-1)>‘9‘)
   return false;
              }
  else if (pc==beforePoint)
  {
  return false;
  }
  
   }
   strTemp+=cTemp;
   }
  else if (cTemp==‘#‘)
   { 
 if (!strTemp.empty())
 {
 stk->Push(atof(strTemp.c_str()));
 strTemp=““;

 }
  pc++;continue;
   }
   else if(cTemp==‘-‘||cTemp==‘+‘||cTemp==‘*‘||cTemp==‘/‘)
   {   
   if(!stk->Pop(v2))return false;
   if(!stk->Pop(v1))return false;
           stk->Push(0);
   }
   pc++;
   }
   if(!strTemp.empty())stk->Push(atof(strTemp.c_str()));
   if(stk->GetSize()!=1)return false;
   return true;
}
//由中缀表达式转换为后缀表达式
int Cal::GetBehindFromMid(string & strS string & strD)
{
 string strTemp=““;
 string strSrc=strS;
 AStack *stk=new AStack(256);
 char ctemp;
 char cctemp;
 char buf[256];
 
 int i;
 int len=strSrc.length();
 for (i=0;i {
 ctemp=strSrc[i];
 if (ctemp>‘9‘||ctemp<‘(‘||ctemp==‘‘)return 1;//含有非法字符
 if(ctemp==‘ ‘||ctemp==‘\t‘||(ctemp==0x0d)||(ctemp==0x0a))continue;
 if((ctemp==‘-‘||ctemp==‘+‘))
 {  
 if (i==0||strSrc[i-1]==‘(‘)
 strTemp+=‘0‘;
 }
 strTemp+=ctemp;  
 }
 len=strTemp.length();
if(len > 255) return 2;//表达式的字符串太长
strTemp.copy(bufstrTemp.length());
bu

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5427  2011-05-17 10:02  苏海计算器\Cal.cpp

     文件       1067  2010-03-05 13:33  苏海计算器\Cal.h

     文件       5423  2010-02-25 14:59  苏海计算器\Calculate.cpp

     文件       1337  2010-02-25 15:00  苏海计算器\Calculate.h

     文件      22752  2011-05-19 23:36  苏海计算器\Calculator.aps

     文件       2363  2011-05-18 21:31  苏海计算器\Calculator.clw

     文件       2119  2010-02-23 20:07  苏海计算器\Calculator.cpp

     文件       4346  2010-02-25 16:49  苏海计算器\Calculator.dsp

     文件        545  2010-02-23 20:07  苏海计算器\Calculator.dsw

     文件       1368  2010-02-23 20:07  苏海计算器\Calculator.h

     文件      91136  2011-05-19 23:36  苏海计算器\Calculator.ncb

     文件     106496  2011-05-18 21:31  苏海计算器\Calculator.opt

     文件       1126  2011-05-17 10:14  苏海计算器\Calculator.plg

     文件       6763  2011-05-17 00:15  苏海计算器\Calculator.rc

     文件      13704  2011-05-17 10:14  苏海计算器\CalculatorDlg.cpp

     文件       2278  2011-05-17 10:14  苏海计算器\CalculatorDlg.h

     文件      30838  2011-05-17 10:02  苏海计算器\Debug\Cal.obj

     文件          0  2011-05-07 00:59  苏海计算器\Debug\Cal.sbr

     文件    3376128  2011-05-07 00:59  苏海计算器\Debug\Calculator.bsc

     文件     122948  2011-05-17 10:14  苏海计算器\Debug\Calculator.exe

     文件     475876  2011-05-17 10:14  苏海计算器\Debug\Calculator.ilk

     文件      14173  2011-05-17 10:14  苏海计算器\Debug\Calculator.obj

     文件    5500532  2011-05-07 16:05  苏海计算器\Debug\Calculator.pch

     文件     435200  2011-05-17 10:14  苏海计算器\Debug\Calculator.pdb

     文件       3480  2011-05-17 00:17  苏海计算器\Debug\Calculator.res

     文件          0  2011-05-07 00:59  苏海计算器\Debug\Calculator.sbr

     文件      64178  2011-05-17 10:14  苏海计算器\Debug\CalculatorDlg.obj

     文件          0  2011-05-07 00:59  苏海计算器\Debug\CalculatorDlg.sbr

     文件     105566  2011-05-07 16:05  苏海计算器\Debug\StdAfx.obj

     文件    1374962  2011-05-07 00:59  苏海计算器\Debug\StdAfx.sbr

............此处省略14个文件信息

评论

共有 条评论