• 实验目的

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

  • 实验环境

操作系统: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<string, double>   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++为程序员提供的模块相关机制,并且学会模块化程序设计范型的基本策略,提高个人的编程水平。但是在运用相应机制的时候还是不够灵活,熟话说,熟能生巧,我相信,通过更多对这方面的练习,我能灵活运用这些机制来解决编程的所带来的问题。

西电软工oop面向对象程序设计实验三上机报告相关推荐

  1. 西电软工oop面向对象程序设计实验二上机报告

    实验目的 本次实验通过设计实现几道以自定义函数为主的程序,以熟悉 C++为程序员提供的函数相关机制,加深对命令行参数.参数传递方式.函数形参的特殊形式等知识的感性认识.学会过程式程序设计范型的基本策略 ...

  2. 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告

    实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...

  3. 西电软工操作系统实验:编译Ubuntu18.04新内核并添加系统调用(含代码以及详细分析)

    西电软工操作系统实验一:编译Linux内核 目录 (一)前言 (二)实验内容 (三)实验环境 (四)实验过程 4.1安装虚拟机 4.2虚拟机换源 4.3 添加系统调用内核 4.4 下载编译所需的软件依 ...

  4. Ubuntu增加一个系统调用(20.04)西电软工OS实验专题二

    title: 西电软工OS实验专题二–增加系统调用 date: 2022-05-14 07:48:48 tags: OS 写在前面: 如果这个过程中你某个地方没有把握,切记使用vm的快照功能,血的教训 ...

  5. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  6. 20145206《Java程序设计》实验二Java面向对象程序设计实验报告

    20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

  7. 面向对象程序设计第三次上机作业Debug心路历程

    面向对象程序设计第三次上机作业Debug心路历程 前言 1.Container类 2.Matrix类 3.Student 类 4.文件流 前言 由于西安疫情不可抗力因素,期中考试被迫推迟 世界第一拉扯 ...

  8. java面向对象实验结论及心得_20162305 实验二 Java面向对象程序设计 实验报告

    20162305 实验二 Java面向对象程序设计 实验报告 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D ...

  9. JavaSE-Adventure(VII) Java OOP 面向对象程序设计

    JavaSE-Adventure(VII) Java & OOP 面向对象程序设计 CONTENTS JavaSE-Adventure(VII) Java & OOP 面向对象程序设计 ...

  10. java红牛农场答案_Java面向对象程序设计实验指导与习题解答(21世纪高等学校计算机专业实用规划教材)...

    导语 <Java面向对象程序设计实验指导与习题解答>是<Java面向对象程序设计>(作者耿祥义,清华大学出版社出版,2010)的配套实验指导和习题解答,目的是通过一系列实验练习 ...

最新文章

  1. ICCV 2021 Workshop 盘点
  2. 最短路径算法 Floyd-傻子也能看懂的弗洛伊德算法(转)
  3. 第十五届全国大学生智能汽车竞赛 信标组亮灯顺序和次数
  4. 若有代数式,则以下能够正确表示该代数式的c语言表达是是 07年4月,2007年4月全国计算机等级考试二级笔试试卷...
  5. OpenCV2:开头篇 介绍
  6. 解决jquery版本冲突问题
  7. ubuntu MySQL Oracle_Oracle 与 MySql 区别
  8. linux下怎么查kill某个进程,Linux下查询进程PS或者杀死进程kill的小技巧
  9. python创建和控制的实体称为_Python eds包_程序模块 - PyPI - Python中文网
  10. catia 版本_KeyShot软件各版本对比详细信息!
  11. 润乾报表使用问题总结
  12. C语言结构体(Struct)
  13. hdu 1011 Starship Troopers (树形背包dp)
  14. 快速安装vs2015社区版
  15. 关于STM32单片机延时微妙(delay_us)函数-hal库
  16. 海康修改云存储服务器,ivms-4200云存储服务器
  17. 转载--video标签在微信内置浏览器和QQ浏览器(手机端)的怪异现象
  18. 微信公众平台开发之获取用户地理位置
  19. 网页动态背景——随鼠标变换的动态线条(鼠标蜘蛛网特效)
  20. Python基础之三元表达式

热门文章

  1. 增量式编码器和绝对式编码器,ABI信号和UVW信号、编码器PWM信号
  2. NAND FLASH 坏块相关知识
  3. GoLang - Go中Mocking(1)
  4. ffmpeg视频剪辑视频长度问题,视频无声音,视频卡顿问题
  5. PLC-Recorder快速监控多个PLC位的技巧
  6. AI Now:比人脸识别更可怕的黑科技---情绪识别
  7. JavaScript立即执行函数
  8. 使用BouncyCastle 实现RSA常用方法
  9. 怎么看计算机电源型号,电脑电源铭牌怎么看?台式机电源铭牌知识扫盲 拒绝虚标!...
  10. material-table的使用