新的Calculator的规范作业

附加作业题目
第三次作业
mygithub:sonnypp

这是开学来第一次写随笔,这一次的作业是对上一次作业的修改,对于上一次作业,在学长老师的帮助下,我重新修改了下代码,将.h文件分成了一个Scan类文件和一个Print类文件,虽然这样看起来没什么变化,但是这看起来就比较清晰明了。

修改后的代码主要是以下这些:

在.cpp中main 函数中的主要代码是:

/************************************************************
文件名:calculator.cpp 
作者:031502331
时间:2016/3/26
博客名:Sxiaopeng    
作用:处理字符串,并且输出数据               
***********************************************************/




#include<iostream>
#include<string>
#include "Scan.h" 
#include "Print.h"
using namespace std;

int main()
{
    /*创建一个Scan类的对象 a;*/
	Scan a;         
    
	/*创建一个Print类的对象 b;*/
	Print b;  
	
	/*声明字符串 ;*/       
	string input; 
	 
	/* 输入字符串 ;*/
	cin >> input;  
	
	/*调用Scan类中的方法处理字符串;*/   
	a.ToStringQueue(input);
	
	/*调用Print类中的方法输出队列;*/   
	b.PrintStringQueue(); 
	    
	return 0;
}

在Scan类的文件里,主要代码是:

#ifndef __SCAN_H__
#define __SCAN_H__

#include<iostream>
#include<string>
#include<queue>
using namespace std;
int count=0;      /*创建全局变量,来计算一个数的有几位数*/
queue<string>key;/*设全局的队列queue*/

/************************************************************
文件名:Scan.h 
作者:031502331
时间:2016/3/26
博客名:Sxiaopeng     
作用:处理main函数传来的数据         
***********************************************************/



//创建Scan的类
class Scan
{
		/*定义一个处理字符串的函数*/
	public:
		void ToStringQueue(string input);
};



//对函数进行封装
void Scan::ToStringQueue(string input)
{
	int l=input.length();    /*测出字符串的长度*/
	string tmp="";
	for (int i=0; i<l; i++)
	{
		/*如果数字的位数超过10 就产生错误;*/
		if (count>10)
		{
			cout<<"Error"<<endl;
			break;
		}
		/*判断是否有字符*/
		if (input[i]=='-' || input[i]=='+' || input[i]=='(' || input[i]==')' || input[i]=='/' || input[i]=='*')
		{
			count=0;
			/*将已有的数据存入队列*/
			if (tmp!="")
			{
				key.push(tmp);
			}
			/*置空*/
			tmp="";
			tmp+=input[i];
			/*讲一个一个不同于数字的运算符存入队列*/
			key.push(tmp);
			tmp="";       /*再次置空*/
		}
		else if (input[i]>=0||input[i]<=9)     /*判断是数字*/
		{
			count++;          /*计算连续数字的个数*/
			tmp+=input[i];        /*将连续数字存在一起*/
			continue;
		}
	}


	key.push(tmp);          /*处理最后面的数字传入队列*/
	tmp="";
}
#endif

在Print类的文件里,主要代码是:



#ifndef __PRINT_H__
#define __PRINT_H__


#include<iostream>
#include<string>
#include<queue>
#include"Scan.h"
using namespace std;



/************************************************************
文件名:Print.h 
作者:031502331
时间:2016/3/26
博客名:Sxiaopeng  
作用:输出Scan类传来的数据           
***********************************************************/


//创建一个Print的类
class Print
{
	/*在类中定义一个输出队列的方法*/
	public:
		void PrintStringQueue();
};

//对Print的类中的方法进行封装
void Print::PrintStringQueue()
{
	if (count<=10)
	{
	     /*判断key队列是否为空*/
		while (!key.empty())            
		{
			cout<<key.front()<<endl;    /*一个一个的输出*/
			key.pop();                /*删除最先那个;因为queue队列是front in front out。*/
		}
	}
}
#endif 


我所建立的工程:

对于本次作业,我再次明白了代码规范的作用,给人清晰,让人看起来舒服。关键是代码的规范更容易让人明白你代码的作用。所以本次作业是很有必要的。继续加油!!

posted @ 2016-03-26 00:43  Sxiaopeng  Views(152)  Comments(0Edit  收藏  举报