资源简介
武汉大学国际软件学院编译原理作业
C++实现计算器+ —* \ 带括号运算
[作业内容和要求]
设计和实现一个计算器,实现整数、实数的加减乘除四则运算,要求:
1、输入字符串(直接从控制台输入、或采用文件输入),可识别的合法单词(token)
为:整数(不以0 开头)、实数(不以0 开头)、‘+’、‘-’、‘*’、‘/’,‘(’、‘)’,‘=’。
以‘=’作为输入结束符。
2、输出要求:检查中缀表达式表示的加减乘除运算是否符合正常的表达式规则,
如果中缀表达式合法,则输出计算结果;如果不合法,则输出出错提示。

代码片段和文件信息
#include
using std::endl;
using std::cout;
using std::cin;
class Numbers //定义存放数字的类
{
private:
long double Num_str[200];
protected:
Numbers():count(0){}
~Numbers(){};
int count;
int Num_set(long double num)
{
Num_str[count]=num;
count++;
return 0;
}
int Num_input(long double numint b)
{
Num_str[b]=num;
return 0;
}
long double getNum(int b)
{
return Num_str[b];
}
bool display();
};
class sign //定义一个符号的类
{
protected:
int a; //‘0‘标志
int b; //‘1-9‘标志
int c; //‘+-‘标志
int d; //‘*‘标志
int e; //‘/‘标志
int f; //‘(‘标志
int g; //‘)‘标志
int h; //‘.‘标志
int i; //‘=‘标志
int fc; //‘(‘计数器
int gc; //‘)‘计数器
sign():a(0)b(0)c(0)d(0)e(0)f(0)g(0)h(0)i(0)fc(0)gc(0){}
~sign(){};
};
class compute:protected Numbersprotected sign //定义一个计算类
{
private:
char member;
compute *next;
protected:
bool creat(compute **head_adrint debug_model=0); //构建算式链表
bool isValid(compute *headint debug_model=0); //判断有效性
bool deal(compute *headcompute **deal_head_adrint debug_model=0); //数值有效化处理
bool comput(compute **comput_head_adrint debug_model=0); //算式计算
long double ltodf(compute *ch_head); //字符串转双精度浮点型
public:
compute():next(NULL){} //构造函数
bool main_Fun(); //总函数
~compute(){};
};
//构建算式链表
bool compute::creat(compute **head_adrint debug_model)
{
char get[1000];
char *point;
int i;
compute *p*cur;
cout<<“请输入四则运算式“;
if(debug_model==1)
cout<<“(debug模式)“< else
cout< cin>>get;
for(point=getp=NULL*head_adr=cur=NULL;*point!=‘\n‘;point++) //依次读取字符串中的字符
{
switch(*point)
{
case ‘.‘:
case ‘0‘:
case ‘1‘:
case ‘2‘:
case ‘3‘:
case ‘4‘:
case ‘5‘:
case ‘6‘:
case ‘7‘:
case ‘8‘:
case ‘9‘:
case ‘+‘:
case ‘-‘:
case ‘*‘:
case ‘/‘:
case ‘(‘:
case ‘)‘:p=new compute;
p->member=*point;
if(*head_adr==NULL)
*head_adr=p;
else
cur->next=p;
cur=p;
break;
case ‘=‘:p=new compute;
p->member=*point;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 15261 2013-03-25 22:57 新建文件夹\Calculator\Calculator\Calculator.cpp
文件 4025 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Calculator.vcxproj
文件 948 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Calculator.vcxproj.filters
文件 202452 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\Calculator.obj
文件 1550 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\cl.command.1.tlog
文件 22324 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\CL.read.1.tlog
文件 1162 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\CL.write.1.tlog
文件 94 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\ConsoleApplication2.lastbuildstate
文件 2002 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\ConsoleApplication2.log
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 2 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 1466 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 3060 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 762 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\li
文件 338944 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\vc110.idb
文件 348160 2013-03-25 23:08 新建文件夹\Calculator\Calculator\Debug\vc110.pdb
............此处省略14个文件信息
- 上一篇:C++课程设计计算器
- 下一篇:自定义消息
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
评论
共有 条评论