当前位置:首页 >> 管理学 >>

数学与信息学院实验报告[3]表达式计算


数学与信息学院实验报告









院系名称: 院系名称:数学与信息学院
2011 年 11 月 实验题目 表达式计算 课程名称 数据结构 学生姓名 周雪琴 任课教师 实验学时 班级学号

程国忠 2
10 级 11 班 201008341 201008341144

一、 实验目的与任务
1.掌握 C 语言基本数据类型的概念,理解数据类型与运算的关系。 . 语言基本数据类型的概念,理解数据类型与运算的关系。 2.熟悉简单变量的定义和赋值方法,掌握不同类型数据之间赋值的规律。 .熟悉简单变量的定义和赋值方法,掌握不同类型数据之间赋值的规律。 3.学习 C 语言运算符优先级和结合性的概念,掌握算术表达式的计算方法及 . 语言运算符优先级和结合性的概念, 表达式计算中的类型转换方法。 表达式计算中的类型转换方法。 4.掌握数学表达式的程序表示方法。 .掌握数学表达式的程序表示方法。 5.进一步熟悉 C 程序的编辑、编译、连接和运行的过程 . 进一步熟悉 程序的编辑、编译、 6.强对栈、树等数据结构的理解,锻炼学生使用多种数据结构解决问题的综 .强对栈、树等数据结构的理解, 合能力。 合能力。

二、实验涉及的相关知识点
1.变量的定义与表达式的计算 变量的定义与表达式的计算 2.循环语句与 IF 条件语句 条件语句。 循环语句与

三、实验内容与过程
(1)能进行一般四则运算“+ )能进行一般四则运算“ - * /”。 。

数学与信息学院实验报告

(2) )要有表达式求值功能,如在屏幕上输入一个表达式 (8+2-5) 要有表达式求值功能, 如在屏幕上输入一个表达式“ “ )*6/10” ” , 程序能够计算其值。 程序能够计算其值。

四、实验结果及分析

五、实验相关说明
1.注意运算的优先级与表达式的结合。 注意运算的优先级与表达式的结合。 注意运算的优先级与表达式的结合 2.合理运用程序求一些相应表达式的值。 合理运用程序求一些相应表达式的值。 合理运用程序求一些相应表达式的值

六、实验有关附件(如程序、附图、参考资料,等)
#include<iostream> #include<string> #include <vector> #include <stack> #include <math.h>

数学与信息学院实验报告

using namespace std; vector<string> split(string exp){ size_t i = 0,len = exp.length(),j = 0; vector<string> temp; for (i = 0;i < len; ) { if (exp[i] == ' '||exp[i] == ' ') { i ++; continue; } if (exp[i] == '('|| exp[i] == ')'||exp[i] == '+'||exp[i]

=='-'||exp[i]=='*'||exp[i] == '/') { temp.push_back(exp.substr(i,1)); i ++; continue; } if (exp[i] >= '0' && exp[i] <= '9'||exp[i] == '.') { for (j = i;exp[j] >= '0' && exp[j] <= '9'||exp[j] == '.'; j ++); temp.push_back(exp.substr(i,j - i)); i = j; continue; }

数学与信息学院实验报告

} return temp; } string str[] = {"+","-","*","/","(",")","#"}; string Precede(string optr1,string optr2){ int i = 0,j = 0; string biao[7][7] = {{">",">","<","<","<",">",">"}, {">",">","<","<","<",">",">"}, {">",">",">",">","<",">",">"}, {">",">",">",">","<",">",">"}, {"<","<","<","<","<","="," "}, {">",">",">",">",">",">",">"}, {"<","<","<","<","<"," ","="}}; for (i = 0;i < 7;i ++) if (optr1 == str[i]) break; for (j = 0 ;j < 7;j ++) if (optr2 == str[j]) break; return biao[i][j]; }

double Operate(double a,string opt,double b){ if (opt == "+") {

数学与信息学院实验报告

return a + b; } else if (opt == "-") { return a - b; } else if (opt == "*") { return a * b; } else if (opt == "/") { return a / b; } cout<<"无效操作符!"; return 0.0; } double iEvaluateExpression(vector<string> exps){ stack<string> OPTR; stack<double> OPND; OPTR.push("#"); unsigned int i = 0;

数学与信息学院实验报告

while (i < exps.size() && (exps[i] != "#" || OPTR.top() != "#")) { if (exps[i] != "+" && exps[i] != "-" && exps[i] != "*" && exps[i] != "/" && exps[i] != "(" && exps[i] != ")" && exps[i] != "#") { OPND.push(atof(exps[i].c_str())); i ++; } else { if (Precede(OPTR.top(),exps[i]) == "<") { OPTR.push(exps[i]); i ++; } else if (Precede(OPTR.top(),exps[i]) == "=") { OPTR.pop(); i ++; } else if(Precede(OPTR.top(),exps[i]) == ">") { string opt = OPTR.top();

数学与信息学院实验报告

OPTR.pop(); double b = OPND.top(); OPND.pop(); double a = OPND.top(); OPND.pop(); OPND.push(Operate(a,opt,b)); } } } return OPND.top(); } void main() { string exp,chioce; while(true){ cout<<endl<<" "<<endl<<endl; cout<<"***************************************************"< <endl; cout<<"* *"<<endl; cout<<"* *"<<endl; cout<<"* *"<<endl; A(a): 计 算 表 达 式 简单表达式计算程序

数学与信息学院实验报告

cout<<"* "<<endl; cout<<"* *"<<endl;

B(b): 退出程序

*

cout<<"***************************************************"<<end l<<endl; cout<<"请输入你的选择: "; cin>>chioce; cout<<endl; if (chioce == "A" || chioce == "a") { cout<<"请输入表达式: cin>>exp; vector<string> temp = split(exp); temp.push_back("#"); cout<<endl<<"计算结果: "<<iEvaluateExpression(temp)<<endl; } else{ break; } } } ";


相关文章:
数学与信息学院实验报告[3]表达式计算.doc
数学与信息学院实验报告[3]表达式计算_管理学_高等教育_教育专区。这是有关数据
大学数学实验报告---怎样计算∏.doc
大学数学实验报告---怎样计算∏ - 数学实验报告 实验一 怎样计算学院:数学与信息科学学院 班级:09 级数学(4)班 姓名:*** 学号:*** 实验二:怎样计算∏...
数学实验实验报告3.doc
数学实验实验报告3_理学_高等教育_教育专区。徐州工程学院数理学院数学应用软件...深刻理解符号表达式的一般处理过程基本表达式的变换; 掌握表 的简单操作运算; ...
数学与信息学院实验报告[2]单链表操作.doc
数学与信息学院实验报告[2]单链表操作 - 数学与信息学院实验报告 实 验 报
实验3 后缀表达式求值.doc
实验3 后缀表达式求值 - 电子信息学院 实验报告书 课程名:题目: 数据结构 后缀表达式求值 设计 BX1008 101003150822 万勤艳 实验类别 班学姓级: 号...
数学实验综合实验报告.doc
如何有效,快速 地寻求大型的线性方程组的数值解释科学工程计算中非常重要的任务....(11) 第 3 页共 25 页 西北师范大学数学与信息科学学院数学实验报告 上式又...
实验3 运算符、表达式和语句.doc
实验3 运算符、表达式和语句_数学_自然科学_专业资料。实验报告实验报告计算机科学 报告人 系级班 20 年月日 指导教师 成绩 课程 名称 实验 目的 实验仪器 ...
c语言实验报告三运算符和表达式.doc
c语言实验报告三运算和表达式_工学_高等教育_教育专区。物光学院计算机类实验报告 《C 程序设计》课程实验报告 学院: 实验设备:计算机 1 台 班级: 姓名: 学...
信号与系统实验报告3实验3 傅里叶变换及其性质.doc
信息工程学院实验报告课程名称: 实验项目名称:实验 3 傅里叶变换及其性质 班级:...符号表达式,此时不能应用 fourier()函数对 f(n)进行处 理,而只能用数值计算...
数学实验报告.doc
玉溪师范学院 2013-2014 学年下学期 《数学实验》...3.学会用 MATLAB 软件计算极限 4.学会用MATLAB计算...(x) 3.对于表达式f=x(x(x-6)+12)t, 分别将...
数据结构算术表达式求值实验报告.doc
软件技术基础实验报告 实验名称: 表达式计算器 系 ...实现基本表达式计算的功能 输入:数学表达式,表达式由...//运算符栈的定义 //数字栈的定义 3.2 计算功能...
数据类型、运算符和表达式(C语言实验报告).doc
数据类型、运算和表达式(C语言实验报告)_工学_...工程信息学院(院、系) 学号 姓名 专业 实验日期 ...(3) 、该实验中表达式求值所用到的知识点包括: ...
程序设计基础(C语言)实验报告.pdf
西安财经学院信息学院《程序设计基础》实验报告实验...(三)完善程序,从键盘上输入 x 的值,按下式计算 ...的数学式子,比如,1<x<10;必 须用逻辑表达式;而 ...
MATLAB程序设计第三章实验报告优秀.doc
曲靖师范学院数学与信息科学学院实验题目 班级 ...3.熟悉利用向量运算来代替循环操作的方法并理解 ...步长为 1 时,表达式 2 可以省略。 实验要求 1. ...
数据结构实验二算术表达式求值实验报告.doc
数据结构实验二算术表达式求值实验报告_调查/报告...设计一个程序,演示通过将数学表达式字符串转化为后缀...运算符的优先级设为 2 case'^':pre[i]=3;...
数据类型、运算符和表达式实验报告.doc
广州大学实验报告 学 院学院 专业、班级 姓名、学号 课程名称 C 程序设计 项目名称 数据类型、运算和表达式实验 实验时间: 2012 年 3 月 20 日 数据类型...
Java实验报告-C语言实训支持表达式的计算器.doc
Java实验报告-C语言实训支持表达式计算器_计算机...用户输入的表达式可 能是符合数学规则的表达式,也... 例如,将中缀表达式“1+((2+3)×4)-5”转换为...
实验3(编程基础).doc
实验3(编程基础)_高三数学_数学_高中教育_教育专区...计算机工程技术学院(软件学院) 实验报告 专业 评定_...3、变量a,b,c,d 定义如下,计算后面的表达式。 ...
数据结构实验二算术表达式求值实验报告.doc
39985457.doc 《数据结构与数据库》 实验报告实验题目算术表达式求值 学 院:化学与材料科学学院 专业...运算符的优先级设为 2 case'^':pre[i]=3;...
数据结构 实验3 后缀表达式求值.doc
数据结构 实验3 后缀表达式求值_数学_自然科学_专业资料。数据结构实验报告 ...(操作数的范围是 0~9,运算符只含?、?、*、/,而且中间 不可以有空格) ,...
更多相关标签: