• Calculator(1.0)


    Calculator(1.0)

    Github链接

    解题过程中遇到的困难

    1. 对于c++中类和对象的使用不够明确,看了c++的视频教程学会了用类和对象来写程序。
    2. 不会使用<queue>,在网上查阅资料,初步了解了<queue>的用法。
    3. 实在用不来指针orz,在对输入的数据进行处理时,只好全程用数组。
    4. 处理数字时,一开始对于一位以上数字的处理过于繁琐,问了同学才知道<string>可以相加,这样就可以方便地存储一位以上的数字。
    5. 忽略了对小数点的处理,在判断数字或符号时加上一个对小数点的处理就行了。
    6. 代码规范,用alt+F8调了缩进,然后按照规范调了一下代码。

    代码

    Scan.h

    #pragma once
    #include <iostream>
    #include <queue>
    #include <string>
    using namespace std;
    
    
    class Scan
    {
    
    private:
    
    	queue <string> q;
    	bool error;
    
    public:
    
        Scan();
        void ToStringQueue (string input);  /*对输入的数字或符号进行处理并存到队列中*/
        queue <string> ReturnQueue();  /*返回处理后得到的队列*/
        bool IsError();  /*用于在数字超出十位时报错*/
    
    };
    

    Print.h

    #pragma once
    #include <iostream>
    #include <queue>
    #include <string>
    using namespace std;
    
    
    class Print
    {
    
    public:
    
        void print (queue<string>q);  /*用于输出处理后的队列*/
    
    };
    

    Scan.app

    #include "Scan.h"
    using namespace std;
    
    
    Scan::Scan()
    {
        error = false;
    }
    
    
    void Scan::ToStringQueue(string input)
    {
    	int i;
    	string a , b;
    	for(i = 0;i < input.size();i++)
        {
    
        	if((input[i] < '0' || input[i] > '9') && input[i]!='.')
        	{
        		a = input[i];
        		q.push(a);
        		a = "";
        	}
        	else
        	{
        		b = input[i];
    	    	a = a + b;
    
    	    	if(a.size() > 10)
    	        {
    			    error = true;
    	        }
    
    		    if (i == input.size() - 1)
    		    {
    			    q.push(a);
    			    a = "";
    		    }	
    		    else
    
    			    if(input[i+1]!='.')
    			    {
    				    if(input[i+1] < '0' || input[i+1] > '9')
    				    {	
    					    q.push(a);
    					    a = "";
    				    }
    			    }  
    	    }
        }
    }
    
    
    queue <string> Scan::ReturnQueue()
    {
        return q;
    }
    
    
    bool Scan::IsError()
    {
        return error;
    }
    

    Print.cpp

    #include "Print.h"
    using namespace std;
    
    
    void Print::print(queue<string>q)
    {
        for(;q.empty() == false;)
        {
    	    cout << q.front() << endl;
    	    q.pop();
        }
    }
    

    main.cpp

    #include "Scan.h"
    #include "Print.h"
    #include <iostream>
    #include <string>
    using namespace std;
    
    
    int main()
    {
        Scan scan;
        Print print;
        string input;
        cin >> input;
        scan.ToStringQueue (input);
    
        if(scan.IsError() == false)
        	print.print(scan.ReturnQueue());
        else
    	    cout << "超过十位啦!";
    
        return 0;
    }
  • 相关阅读:
    兴趣标签体系告诉我,闲鱼的95后是这样的...
    重磅报告 | 《中国企业2020:人工智能应用实践与趋势》
    this指针和类的继承 C++快速入门16
    构造器和析构器 C++快速入门15
    构造器和析构器 C++快速入门15
    鱼油账号记录程序(续) 零基础入门学习Delphi39
    鱼C扫描器 零基础入门学习Delphi40
    鱼油账号记录程序(续) 零基础入门学习Delphi39
    PEInfo编程思路讲解02 工具篇02|解密系列
    PEInfo编程思路讲解02 工具篇02|解密系列
  • 原文地址:https://www.cnblogs.com/zhengshuhao/p/5253627.html
Copyright © 2020-2023  润新知