实验 计算器

  • 格式: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