zoukankan      html  css  js  c++  java
  • 第三次作业【补完作业】

    第三次作业 传送门

    ------ 一次从C语言到C++的迁徙

    心路历程

    • 看到这次题目,原来以为很简单就能实现的问题,但是过了几天后我才意识到这不是那么简单的事情。因为这不是我熟悉的c语言,而是一个完全不认识的新领域c++。

    • 开学前,刚刚提交了没打完的代码,只知道用.h和main函数的链接,至于.h要加cpp的文件一无所知,于是自己的.h就打在了main cpp里。于是带着未完成的使命,开始了下学期的生活。一开始课程不紧,还会有时间去看下自己的代码如何改进,在那个时候我知道一个.h文件后要加一个cpp文件。所以一共需要五个文件,我很早就学到了public,private,protect一类的关于类的事物,但是我只知道他就是他,跟c语言并不知道该如何联系在一起,而当时我很感谢这道题目带我认识了string这个类型,让我在开学后的c语言作业里有了一些捷径,学习string甚至比char类型还要用心,和彻底

    • 时间不遂人愿,课程变多了,也就没什么时间去管理。直到今天,我的舍友告诉了我之间的联系.h的cpp文件里的private就是相当于一个函数的局部变量,而public是全局变量,对于main函数而言,这个.h相当于c语言中写一个函数,将c语言和c++的联系摆在我的面前,那么这道题我觉得我可以了。其实这么看下来,我所不理解的就是c++这个变量的使用,以及一个初学者如何把他们联系在一起
      

    以下是代码部分

    scan.h

    #include <iostream>
    #include <queue>
    #include <string>
    using namespace std;
    class Scan
    {
    public:
    	queue<string> ToStringQueue(string a);                   //定义一个类似于c语言的调用函数
    	queue<string>result_queue;                               //定义一个队列用于输出
    
    private:
    
    	string a;
    	int i;
    	string b;                                                //对于scan.h中的cpp文件的局部变量
    
    protected:
    
    
    };
    

    scan.cpp

    #include"Scan.h"
        queue<string>Scan::ToStringQueue(string a)
        {
    	    for (i = 0; i < a.size(); i++)                            //遍历一遍输入的string
    	    {
    		if (a[i] > 47 && a[i] < 58 || a[i] == '.')        //0-9和.归入string b。
    			b += a[i];
    		else                                              //一旦出现了非这些符号,把b推进队列
    		{
                    if (!b.empty())                          
                        result_queue.push(b);              
    
    			b.clear();
    			b = a[i];                                  //另外要考虑到如果两个连续为比如‘*(’的情况下要检测是否b为空,否则会输出空格
    			
                    if (!b.empty())
                        result_queue.push(b);
    			b.clear();
    
    		}
    	}
    	if (!b.empty())
    	{
    		result_queue.push(b);
    	}
    	return result_queue;                                        //将结果的队列返回给主函数
    }
    

    print.h

    #include<string>
    #include<queue> 
    #include<iostream>
    using namespace std;
    class print
    {
        public:
    	    void PrintStringQueue(queue<string>result_queue);           //定义输出函数
    
        private:
    	    int i, a;
    };
    

    print.cpp

    #include"print.h"
    void print::PrintStringQueue(queue<string> result_queue)
    {
        a = result_queue.size();
        for (i = 0; i < a; i++)
        {
    	cout << result_queue.front() << endl;                //循环输出队列首元素,然后用.pop删除首元素
    	result_queue.pop();
        }
    }
    

    main.cpp

    #include<iostream>
    #include<string>
    #include<queue>
    #include"Scan.h"
    #include"print.h"
    using namespace std;
    int pd(string str)                                                    //判断这个数字是否超过10位
    {
    	    int i, j = 0, k = 0;                
    	    for (i = 0; i < str.size(); i++)
    	    {
    		    if (str[i] <= '9'&&str[i] >= '0' || str[i] == '.')
    	    {
    		    j++;
    		    if (str[i] == '.')                            //针对小数点的话,应该判断是否超过11位
    		    {
    			    k = 1;
    		    }
    		    if (k == 1 && j > 11)
    		    {
    			    return 1;                             //不符合要求返回1
    			    break;
    		    }
    
    		    if (k == 0 && j > 10)
    		    {
    			    return 1;
    			    break;
    		    }
    
    	    }
    	    else
    	    {
    		    j = 0;                                        //一个数结束清0
    	    }
            }
            return 0;
    
    }
    
    int main()
    {
            queue<string>q;                                                //定义一个新的队列q,用于交换scan的队列值,放入print里
            Scan sc;
            print pr;
            string input;
            cin >> input;
            if (pd(input) == 0)                                            //利用0 1 之间的关系,类似于bool但是不太会用,老老实实这样做了。
            {
                q = sc.ToStringQueue(input);    
    	    pr.PrintStringQueue(q);
            }
            else
            {
                cout << "error" << endl;                    
            }
            return 0;
     }
    

    章末总结

    • 本次作业,真正的带我们走入了c++的世界,在这个世界中,我认识到了如何把一个零碎的文件,集合成一个强大的,完整的个体。另外string和queue对象的使用,尤其是前者,对我现在的c语言的代码编程,有了很大的帮助。同时感谢我的舍友对我的点拨和帮助。*
  • 相关阅读:
    【win7】安装开发环境
    【php-fpm】启动PHP报错ERROR: [pool www] cannot get uid for user 'apache'
    【apache2】AH00543: httpd: bad user name apache
    【gedit】 显示行号
    关于golang.org/x包问题
    国内的go get问题的解决
    php7函数,声明,返回值等新特性介绍
    php5.6.x到php7.0.x特性
    PHP5.4.0新特性研究
    【git】如何去解决fatal: refusing to merge unrelated histories
  • 原文地址:https://www.cnblogs.com/kobe961231/p/5352589.html
Copyright © 2011-2022 走看看