实验 计算器
- 格式:doc
- 大小:40.00 KB
- 文档页数:2
实验 计算器
一、实验目的:
掌握栈的运算及应用,了解对程序的健壮性设计要求。
二、实验内容:
1. 实现Precede、char_In和Operate函数;
2. 完善EvaluateExpression函数,增加对输入的合法性检查,包括所有非法输入及左右括号不配对的输入;
3. 编制应用程序测试这个计算器;
三、实验基本原理:
1. 利用数组record[100]存储,cin输入的数据。
2. 在ident_cal()函数里,进行判断和计算功能。
1) 判断record[i]是否为数字,是则进入a[10]数组;
2) 不是则把a[10]转化为数,然后判断record[i]是否为符号,是判断优先级,决定进栈,出栈或者计算;
3) 如果都不是,报错。
使用函数列表:
double calculate(); //计算函数
void ident_cal(); //判断函数
int identify_f(char c); //判断符号函数
char Precede(char t1,char t2); //判断优先级函数
double translate(char *p); //数字转化函数
四、实验主要部分流程图:
void ident_cal()
(record[i]>='0'&&record[i]<='9')||record[i]=='.'record[i]Ya[j]=record[i];j++;Nk=translate(a);n=identify_f(record[i])ncout << "您输入的是非法字符!";exit(1);switch (Precede(p_c->next->character,record[i]))YN 五、调试结果分析
输入 输出
(56-23)/8-4= 0.125
34+p(u89-12.3)k/3= 您输入的是非法字符!
89.5*749+25)= 您只正在结尾处输入了“)”,并没有在开始时输入“(”
(8*(7-4)= 出错
65*(72+98)(70-45)= ‘)(’不能相连使用"
6*= 非法输入
)5+3(= 您只正在结尾处输入了“)”,并没有在开始时输入“(”
-3-(-2+3)= -2
((2))= 2
((-2))= -2