• 第三次作业


    第二次作业


    作业:object-oriented  
      

    作业要求

    完成过程

      在刚刚看完题目时的我,是不太理解题目意思的,因为我还没有学过有关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。。不能再悲剧)
    ---------better than nothing
  • 相关阅读:
    【设计模式】策略模式
    【设计模式】模板方法模式
    【C++】《Effective C++》第五章
    【C++】《Effective C++》第四章
    free命令详解(内存)
    top命令详解(动态进程)
    ps命令详解(静态进程)
    SpringBoot_集成Redis
    SpringBoot_热部署插件
    SpringBoot_实现RESTfull API
  • 原文地址:https://www.cnblogs.com/joke15/p/5224963.html
Copyright © 2020-2023  润新知