西电软工oop面向对象程序设计实验三上机报告-创新互联

  • 实验目的

本次实验通过实现计算器程序,以熟悉 C++为程序员提供的模块相关机制,学会模块化程序设计范型的基本策略,能够灵活运用相应机制,提高编程水平。

创新互联公司是一家专注网站建设、网络营销策划、微信小程序、电子商务建设、网络推广、移动互联开发、研究、服务为一体的技术型公司。公司成立10多年以来,已经为1000+成都纸箱各业的企业公司提供互联网服务。现在,服务的1000+客户与我们一路同行,见证我们的成长;未来,我们一起分享成功的喜悦。
  • 实验环境

操作系统:win10

开发工具:Visual Studio2015

  • 实验内容

将桌面计算器按照以下要求改造实现:

  1. 采用多个头文件、多个源文件的方式实现完整程序,使得其物理结构和逻辑结构保持一致;
  2. 输入中每遇到一个分号或回车(‘\n’)就认为一个表达式结束,并记作一行,在处理过程中累计行数;
  3. 当输入的内容不符合计算器语法规定时,除了提示错误原因外,还需提示相应的出错行号(提示:当出现语法或词法错误时,教材给出的程序并没有将输入的内容读完。这种情况应当考虑)。
  4. 必须支持命令行参数,以指明0个或1个输入文件(输入文件就是普通的文本文件,其中预先输入了若干表达式,内容和来自标准输入的完全相同)。
  • 若命令行未指明输入文件,则程序从标准输入读取表达式;

若命令行指明输入文件,则程序从该文件读入表达式。

  • 实验步骤

实验思路:采用多个头文件、多个源文件的方式实现完整程序,分号或回车,认为一个表达式结束,并记作一行,在处理过程中累计行数;当输入的内容不符合计算器语法规定时,提示错误原因并且提示相应的出错行号,支持命令行参数,用以指明0个或1个输入文件。

关键数据结构定义和类的接口定义:

enum Token_value {

NAME,      NUMBER,        END,

PLUS = '+',   MINUS = '-',  MUL = '*', DIV = '/',

PRINT = ';',  ASSIGN = '=', LP = '(',  RP = ')'

};

map table;

实验源码

https://download.csdn.net/download/weixin_52552833/87190521

问题和解决方案:c++的sstream流的运用,可以从中分别读出运算式子的数字与字符还有去除括号时将未处理字符(即非括号内的字符)以及括号内的子式处理结果输出到流中,便于迭代去除括号。

  • 实验结果

输入:

1+

2*3

-4/2

=

输出:5

输入:2*(2+3)-(1+2)=

输出:7

输入:1,2

输出:error: bad token

  • 实验总结

本次实验的实现计算器程序,让我熟悉 C++为程序员提供的模块相关机制,并且学会模块化程序设计范型的基本策略,提高个人的编程水平。但是在运用相应机制的时候还是不够灵活,熟话说,熟能生巧,我相信,通过更多对这方面的练习,我能灵活运用这些机制来解决编程的所带来的问题。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站栏目:西电软工oop面向对象程序设计实验三上机报告-创新互联
网站地址:http://azwzsj.com/article/espch.html