zoukankan      html  css  js  c++  java
  • 2017《面向对象程序设计》课程作业三

    新增要求

    • 要求将第一次作业中使用静态变量的方法进行改进,推荐使用传参、定义函数有返回值。
    • 多参数主函数要求:在命令行中输入的参数为:用户要求题目数量的文件路径、最终结果的文件路径。
      D:>a.exe d://in.txt d://out.txt,a.exe为可执行文件,d://in.txt为用户要求的题目数量的文件路径,d://out.txt最终结果的文件路径。
    • 要求将程序写成一个.cpp和一个.h的形式。
    • 新增函数要求:
      int main(int argc,char *argv[]){}
      readFile()//读取用户要求的题目数量(请注意参数设置)
      writeFile()//将最终结果写入文件,写入内容包括:用户输入的题目数,每个生成的表达式、正确答案、用户输入的答案,保存到命令行中第二个参数指定的路径。(请注意参数设置)
    • 要求将课程作业一的代码进行迭代,实现以上各个模块。各个模块的形参列表、函数返回值类型可自由定制。

    github地址

    程序运行截图

    • 开始在input.txt中输入题目数。
    • 打开cmd窗口,将文件拖入窗口内,注意文件之间要有空格。

    遇到问题

    • 对应要求,把上次作业中唯一的一个全局变量language(布尔型)改成了局部变量,然后用指针传递。
    • 因为之前自己学过命令行参数的知识,所以问题不大,就是要注意路径之间要有空格隔开。
    • 这次作业中,需要将数字和字符都输入进文件,但是我所了解的函数只能将字符写入文件,所以就遇到了一个问题:如何将数字转化为字符?刚开始我用了itoa()来转化,可是写入文本的数字都变成了二进制的格式。查了一下发现可能是因为编码不兼容的问题,于是改用sprintf()(用法:sprintf(字符串,“%d”,整型变量))就成功转化了整型变量;
    • 在将表达式写入文件时遇到了问题:表达式如:(a+b)+(c+d),既有字符又有数字,要把他们转化成字符串,才能使用writeFile函数。我用了一种不太好的办法:对每一个单元做两步,第一步使用sprintf()转化字符串,第二步用strcat()将他们接在一个总的字符串的末尾后。strcat()遇到''时,把另一个字符串的头覆盖在前一个字符串''上,这样就能把两个字符连起来。
    • 文件在cmd窗口里运行时会出现两次的输出:在把东西写入文件时,那些东西会在cmd窗口再显示一次,所以,我把一些重复的输出语句删去,这样就只留下一次的输出。
    • 使用git时,遇到了问题(相同的问题,图来源于网络)

      有两种解决方法:1、使用git push -f 强行推送覆盖。2、使用git pull 在git push推送。

    感想

    程序运行有不同的方式,可以双击点开,也可以使用cmd窗口打开,main函数也可以接受参数,在使用文件输入输出时,也有一些需要留意的地方。代码迭代的过程中遇到了许多问题,除了未知的知识以外,很多是不太良好的编码习惯导致的,觉得以后一定要注意编码的规范性,这样可以给自己给别人减少许多麻烦。做作业的过程,搜索查找的过程,一些模棱两可的东西变得更清晰了,一些知识才真正被掌握起来。

  • 相关阅读:
    MYSQL 使用DBI
    mysql 更改数据目录
    Error Code: 1360
    org.hibernate.exception.GenericJDBCException: Could not open connection
    Error: Dynamic is undefined
    Unhandled event loop exception No more handles
    Count:858org.apache.jasper.JasperException: Unable to compile class for JSP
    Mysql --skip-grant-table
    第24章-启动 停止 和配置mysql
    Linux 6.2 x86_64 安装ipvs
  • 原文地址:https://www.cnblogs.com/vancasola/p/6817880.html
Copyright © 2011-2022 走看看