新的Calculator的规范作业
这是开学来第一次写随笔,这一次的作业是对上一次作业的修改,对于上一次作业,在学长老师的帮助下,我重新修改了下代码,将.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
我所建立的工程:
对于本次作业,我再次明白了代码规范的作用,给人清晰,让人看起来舒服。关键是代码的规范更容易让人明白你代码的作用。所以本次作业是很有必要的。继续加油!!