第二次作业
作业要求
完成过程
在刚刚看完题目时的我,是不太理解题目意思的,因为我还没有学过有关queue的只是,所以我只好暂时先不开始做题目,而是通过百度,询问同学等等的方式,展开有关queue知识的学习,但是因为我没找到相关教学视频,单纯的看文字又有不太理解的地方,所以此次作业中queue的知识可能没有正确使用。
第一次完成代码时,我还没有考虑作业上提出的要求,只是先把大体的代码给打出来了
`#include "Scan.h"`
`#include "Print.h"`
`#include `
`#include `
`#include `
`#include `
using namespace std;
class Print
{
public:
void output (queue m_queQ)
{
while (m_queQ.size())
{
cout << m_queQ.front() <ToStringQueue(string input)
{
queue m_queQ;
int i;
bool j=false;
string m_strS;
for (i=0; i='0' && input[i+1]<='9' && input[i+1]>='0')
{
m_strS+=input[i];
j=false;
}
else
{
m_strS+=input[i];
j=true;
}
if(j)
{
m_queQ.push(m_strS);
m_strS.clear();
}
}
return m_queQ;
}
};
int main ()
{
Scan scan;
Print print;
string s;
cin >>s;
queue q=scan.ToStringQueue(s);
print.output(q);
return 0;
}
先尝试运行一次,发现自己忘记处理有小数点的情况,于是在判断中多了一个判断
else if (input[i]=='.' || input[i+1]=='.')
{
m_strS+=input[i];
j=false;
k=-1;
}
再次运行,可以顺利通过了,于是开始考虑题目的要求,首先我引入一个变量l去判断每个m_strS的长度,结果发现这样在算数字位数时会将小数点也算进去,于是又引入变量k,通过k值判断是否有小数点,同时在Print中判断是否需要报错。在经过了修改后,我的代码总体如下:#include "Scan.h"
`#include "Print.h"`
`#include `
`#include `
`#include `
`#include `
using namespace std;
class Scan
{
public:
queueToStringQueue(string input)
{
queue m_queQ;
int i;
bool j=false;
string m_strS;
int k=0; //利用k值判断数字中是否含有小数点,方便之后对数字位数的统计//
int l;
for (i=0; i='0' && input[i+1]<='9' && input[i+1]>='0')
{
m_strS+=input[i];
j=false;
}
else if (input[i]=='.' || input[i+1]=='.')
{
m_strS+=input[i];
j=false;
k=-1;
}
else
{
m_strS+=input[i];
j=true;
}
l=m_strS.size();
if (l+k>10)
{
m_queQ.push("E");//在队列最后插入E,标记此时得到的数字超过十位//
break;
}
if(j)
{
m_queQ.push(m_strS);
m_strS.clear();
}
}
return m_queQ;
}
};
class Print
{
public:
void output (queue m_queQ)
{
bool t;// t表示报错后,跳过之后的输出//
t=true;
if (m_queQ.back()=="E")//先前插入的E在此时发挥作用,队尾为E则需要报错//
{
cout <<"Error"<< endl;
t=false;
}
while (m_queQ.size() && t)
{
cout << m_queQ.front() <>s;
queue q=scan.ToStringQueue(s);
print.output(q);
return 0;
}
运行后发现运行还算正常,暂时没有发现哪边有错,于是将文件Push到了github上。(由于在使用github时一时失误,把上次的作业给删除了,所以这次只好重新上传QAQ。。不能再悲剧)