程序设计第三次作业附加 代码规范

  • Calculator.h

//==============================//
//文件名称:calculator.h 
//作者:031502209 
//时间:2016/3/23 
//博客:qq952693358 
//==============================//
#ifndef CALCULATOR_H
#define CALCULATOR_H
#include<string>
#include<queue>
#include<stdlib.h>
#include<iostream>
using namespace std;

//==============================//
//class:Input 
//包含:输入函数Get 
//函数类型:string
//说明:输入函数单独放在这个类里 
//==============================//
class Input
{
    public:
        string Get();
};

//===============================//
//class:Print
//包含:输出函数Get 
//函数类型:queue<string> 
//说明:输出函数单独放在这个类里 
//===============================//
class Print
{
    public:
        void pout(queue<string> que); // type:queue<string>
};

//===============================//
//class:Scan
//包含:函数ToStringQueue 
//函数类型:queue<string> 
//说明:输出函数单独放在这个类里 
//===============================//
class Scan
{
    // private section
    public:
        queue<string>ToStringQueue(string input);//type:queue<string>
};

#endif // CALCULATOR_H
  • Calculator.cpp

#include "calculator.h" // class's header file
#include<string>
#include<queue>
#include<stdlib.h>
#include<iostream>
using namespace std;

int t=0; // Using global variable "t";

string Input::Get()
{
    string s;
    cin>>s;
    return s;
}

queue<string> Scan::ToStringQueue(string input)
{   
    // type:queue<string>
    
    int n=input.length();
    int i,j;
	
    queue<string> que;
    string s;
    
    for(i=0 ; i<n ; i++) // Error: n has no define; 
    {
        if(t>10)     // such as "10,000,000,000"
        {
            cout<<"Error"<<endl;
            break;
        }
        
        if(input[i] == '-' || input[i] == '+' || input[i] == '(' 
	  || input[i] == ')' || input[i] == '/' || input[i] == '*')
        {
            t=0;      //stop the count
            
            if(s!="") //avoid null string
            que.push(s);
            s="";     //s.clear(); 
            
            s+=input[i];
            
            que.push(s);
            s="";
        }
        else
        {
            t++;
            
	    s+=input[i];
            
            continue;
        }
    }
    
    que.push(s);
    s.clear();
    
    return que;
}

void Print::pout(queue<string> que)
{
    if(t <= 10) // ifnormal
    {
        while(que.empty() == 0) // "que" is not empty
        {
            cout << que.front() << endl;
            
	    que.pop();
        }
    }
}

int main()
{
    queue<string> que; // type:queue<string>
    
    Scan Sc;    // Define a "Scan" object:"Sc".
    Print Put;  // Define a "Print" object "Put".
    Input Ge;   // Define a "Input" object "Ge".
    string input;

    input=Ge.Get();              // receieve input.
    que=Sc.ToStringQueue(input); // receieve que.
    
    Put.pout(que);    // printf que.
    return 0;
}
// example:
// -100+(98-97)*2

2016/3/23

posted @ 2016-03-23 18:07  Wasdns  阅读(294)  评论(3编辑  收藏  举报