zoukankan      html  css  js  c++  java
  • 第三次附加作业

    1、代码链接:https://github.com/laixiaolian/object-oriented

    2、Calculator.cpp

    #include "Calculator.h"
    #include <iostream>
    bool Scan::ToStringQueue(string input)
    {
    size_t markOfReadPos = 0; //标识已经导入到input的第几位,初始0为input第一位
    bool isDigit = false; 
    bool isdecimal = false; 
    
    for (size_t i = 0; i != input.size(); i++)
    {
    	if (isdigit(input[i]) || input[i] == '.') //判断是否为数字,包括小数点
    	{
    		if (input[i] == '.') 
    		{
    			isdecimal = true;	
    		}
    		
    		isDigit = true;
    		continue;
    	}
    
    
    	else 
    	{
    		if (isDigit == true) //判断是否刚读完一串数字
    		{
    			isDigit = false;
    			string tmp = input.substr(markOfReadPos,i - markOfReadPos); //i - markOfReadPos为要截取的字符串字符数
    
    			//判断输入的数字是否超过10位
    
    			if (isdecimal) 
    			{
    				if ((tmp.size() - 1) > 10) 
    				{	
    					return false;	
    				}
    	    	}
    
    
    			else 
    			{
    				if (tmp.size() > 10) //整数部分超过10位
    				{	
    				  return false;	
    				}
    			}
    
    
    			m_scanstring.push(tmp); //将markOfReadPos 到 i位置的数字 的string导入queue
    			markOfReadPos = i;
    			isdecimal = false;
    		}
    
    
    		string sign;
    		sign.insert( sign.begin(), input[i] ); //把char转化成string
    		m_scanstring.push(sign);
    		markOfReadPos++;
    	}	
    }
    
    
    if (isDigit) //表示表达式最后为数字
    {
    	string tmp = input.substr(markOfReadPos,input.size() - markOfReadPos); //i - markOfReadPos为要截取的字符串字符数
    
    
    	//判断输入的数字是否超过10位
    
    	if (isdecimal) 
    	{	
    		if ((tmp.size() - 1) > 10) 
    		{	
    			return false;	
    		}	
    	}
    
    
    	else 
    	{	
        	if (tmp.size() > 10) 
    		{	
    			return false;	
    		}
    	}
    
    	m_scanstring.push(tmp); //将markOfReadPos 到 i位置的数字 的string导入queue
    }
    
    return true;	
    }
    
    
    void Print::PrintQueue(queue<string>& tmpQueue)
    {
    while(!tmpQueue.empty()) //此种遍历会清空queue
    {
    	cout<<tmpQueue.front()<<endl;
    	tmpQueue.pop();	
    }				
    }
    

    3、Calculator.h

    #include<queue>
    #include "string"
    using namespace std;
    

    scan类

    class Scan
    {
    public:
    	Scan() {};
    	~Scan() {};
    	
    public:
    	bool ToStringQueue(string input); //读取用户输入的四则运算表达式inupt,分解后转存到m_scanstring
    	
    public:
    	queue<string> m_scanstring;	
    };
    

    print类

    class Print
    {
    public:
    	Print() {};
    	~Print() {};
    	
    public:
    	void PrintQueue(queue<string>& tmpQueue); //接受一个队列
    };
    

    4、main.cpp

    #include "Calculator.h"
    #include <iostream>
    using namespace std;
    int main()
    {
    string input;
    Scan scanMachine;
    Print printMachine;
    
    cin>>input;
    
    if (scanMachine.ToStringQueue(input))
    {
    	printMachine.PrintQueue(scanMachine.m_scanstring);	
    }
    
    else
    {	
    	cout<<"包含位数超10位的数字,请重新输入!";
    }
    
    system("pause");
    }
  • 相关阅读:
    工程结构
    生活决策
    工作原则概要与列表
    生活原则概要与列表
    在Windows2008下安装SQL Server 2005无法启动服务的解决办法
    MySQL启动提示High Severity Error解决方案
    知乎页面颜色个性化修改
    博客园 CodingLife 模板 翻页样式美化方法
    【翻译】GitHub Pages Basics 基本使用帮助【一】GitHub Pages 是什么?
    【翻译】GitHub Pages Basics 基本使用帮助【首页】
  • 原文地址:https://www.cnblogs.com/laixiaolian/p/5314546.html
Copyright © 2011-2022 走看看