zoukankan      html  css  js  c++  java
  • Calculator(补)

    MyGitHub

    刚刚开始时确实是连题目都看不懂= =,从第二行的新建类开始,就不知题目所云。所以我的困难比很多同学都要 开始得早一些——从题目第二行开始。
    准确的说,当我按照题目要求新建了一个scan类后,就不知道要做什么了QAQ。由于不熟悉,导致我不知道.h文件要些什么, .cpp又应该写什么。看了慕课
    网好多遍,但似乎没有明确的解释(果然是太简单了么orz,所以在截止时间(补考15号)之前明明有时间,后面的式子拆分有想法,却一直没有勇气去写= =,一直拖到现在。)
    索性没有放弃,截止时间一过,反而从容了些(捂脸,就仔细地了解 类 的定义,分文件的定义,终于不再一头雾水了。

    第一个难点:头文件.h和源文件.cpp文件里应该写什么。
    在网络上搜过很多相关内容,但是解释都太笼统了,“申明写在.h文件,定义实现写在.cpp文件”导致看起来似乎懂了,但是实际下手却又不知道
    应该写什么,找到了两个介绍比较简洁暴力的①②:
    结合我的理解:

    .h文件

         #ifndef SCAN_H     //SCAN_H 随便写都可以,但是为了和文件名一致最好写有意义的语句。
         #define SCAN_H     //和endif配对,目的为了防止重复编译出错。
          class Scan
          {
          public:
            scan();
            ~scan();
           //我需要做的在就是这儿写下函数的声明就好了。
          };
         #endif
    

    .cpp文件

          #include "sprintf.h"
          Scan::Scan(){}
          Scan::~Scan(){}
          //在这儿写完整的函数就好了。
    

    最后就是建立mian.cpp文件:在这个文件中,首先需要在主函数的头文件中写上include"Scan.h",将之前写的类包含进去,然后在熟悉的
    int main()函数中声明这个类,如'Scan scan',这样便可以用之前熟悉的方法调用所写的函数了。
    总结:之前一直不明白,能好好用一个main主函数解决的程序,非要这么复杂地绕一大圈,现在总算是尝到甜头,知道好处了:当我们所写的
    代码冗杂,篇幅较长时,在一个主函数中寻找他就变得麻烦了。而分文件的写法能提高整个程序的效率,使代码高效,写程序者也能保持思路清晰。
    逻辑感强烈。
    由此,我的思路清晰起来:写一个scan函数将符号和数字分开 ——> 写一个print函数用于输出 ——> 然后在主函数中得到键盘输入——>调用
    scan函数拆分——>得到的式子传输给print函数输出。


    第二个难点:对象和
    string:学过char,因此string并不难理解。参考资料:③
    该博客十分详细,但是本次作业中并不需要运用到这么复杂地功能,string的运用主要是在队列中作为对队列类型的定义。唯一需要注意的是在头
    文件中不应该写#include<string.h>而应该写#include.
    queue:在网络上盲目地百度queue的使用看得头晕,可喜的是寻找到甘霖:同样暴力简洁的资料十分可喜:
    参考资料④
    本次作业中,需要做的便是定义一个队列queueinput 将输入的string s 通过数字符号拆分处理用 input.push()
    传进队列。队列先进先出,在print函数中用output.front()输出队列头,output.pop(),扔掉队列首,用while判断队列是否为空循环直至队列
    清空。

    用到的队列操作函数:
    申请队列:queueq;
    判队空:q.empty();
    获取队头元素:q.front();
    入队:q.push();
    出队:q.pop();


    第三个难点:将数字连接成一个字符串
    这个不算难点,在之前的大数运算中已有接触。逐个扫描s,如果数字的下一位还是数字(是否数字用s[i]<‘9’&&s[i]>'0'||s[i]'.'来判
    断),遇见数字或.就直接用+来将其连接,并用count计数。如果下一位是除小数点以外的符号,则结束循环,将数字字符串送进队列。当count
    10,
    则启用第二个队列,输出WRONG。
    用到的string类函数:

    s.clear();清零
    s=s+s1;字符串相加。
    n=size(s);计算字符串长度。

    参考文献:

    参考资料①:.h和.cpp应该写什么
    参考资料②: 同上
    参考资料③:string类详解
    参考资料④:queue和栈的使用
    注释格式:[http://blog.csdn.net/weiwenhp/article/details/8484973]

  • 相关阅读:
    (收藏)VC 实现无标题窗口的拖拽
    进程间通信之管道
    stl
    操作系统的电源相关消息
    获得设备信息
    c++字符串大小写转换
    installshield 判断操作系统安装
    窗体的扩展样式和其值
    进程间通信交换数据——初级篇
    了解SYSDATE函数
  • 原文地址:https://www.cnblogs.com/mingtime/p/5375403.html
Copyright © 2011-2022 走看看