zoukankan      html  css  js  c++  java
  • 实验六zxt

    Q1:芯片问题

    思路:basic做父类,ABC做子类

    #include<iostream>
    using namespace std;
    class basic{
    	public:
    	   basic(int,int);
    	   int mm(){return m;}
    	   int nn(){return n;}//提供了m,n的外部接口 
    	   void add();
    	private:
    	   int m,n; 	
    }; 
    //basic类为芯片ABC的最基本功能,即m+n 
    basic::basic(int mx,int nx)
    {m=mx;n=nx;} //构造函数的实现
    void basic::add()
    {cout<<"m+n="<<mm()+nn()<<endl;}
    //basic已经完成,开始芯片A
    class A:public basic{
        public:
        	A(int a,int b):basic(a,b){}; 
        	void sub();
    };
    void A::sub()
    {cout<<"m-n="<<mm()-nn()<<endl;} 
    class B:public basic{
    	public:
    		B(int a,int b):basic(a,b){};
    		void mul();
    }; 
    void B::mul()
    {cout<<"m*n="<<mm()*nn()<<endl;}
    class C:public basic{
    	public:
    		C(int a,int b):basic(a,b){};
    		void div();
    }; 
    void C::div()
    {cout<<"m/n="<<(float)mm()/nn()<<endl;}  
    //芯片ABC都已经设计好
    int main()
    {
        basic ba(2,3);
        ba.add();
        A a(3,4);
        a.sub();
        a.add();
        B b(2,1);
        b.add();
        b.mul();
        C c(7,8);
        c.div();
        c.add();
    	return 0; 
    } 
    

      运行截图:

    Q2:车类

    思路:合理的应用虚基类

    #include<iostream>
    using namespace std;
    class vehicle
    {
    	public:
    		void run();
    		void stop();
    		vehicle(int a,int b)
    	{
    		    maxspeed=a;weight=b;
    		} 
    		~vehicle(){}
    	private:
    		int maxspeed;
    		int weight;
    };
    void vehicle::run(){cout<<"vehicle is running"<<endl;}
    void vehicle::stop(){cout<<"vehicle has stopped"<<endl;}
    class bicycle:virtual public vehicle
    {
    	public:
    		void run();
    		void stop();//同名覆盖 
    		bicycle(int a,int b,int c):vehicle(a,b)
    		{
    		  height=c;
    		}
    		~bicycle(){}
    	private:
    		int height;
    };
    void bicycle::run(){cout<<"bicycle is running"<<endl;}
    void bicycle::stop(){cout<<"bicycle has stopped"<<endl;} 
    class motorcar:virtual public vehicle
    {
    	public:
    		void run();
    		void stop();
    		motorcar(int a,int b,int c):vehicle(a,b)
    		{
    		    seatnum=c;
    		}
    		~motorcar(){}
    	private:
    		int seatnum;
    };
    void motorcar::run(){cout<<"motorcar is running"<<endl;}
    void motorcar::stop(){cout<<"motorcar has stopped"<<endl;}
    class motorcycle:public motorcar,public bicycle
    {
        public:
        	void run();
        	void stop();
        	motorcycle(int a,int b,int c,int d):vehicle(a,b),bicycle(a,b,c),motorcar(a,b,d)
    		{}
        	~motorcycle(){}
    };
    void motorcycle::run(){cout<<"motorcycle is running"<<endl;}
    void motorcycle::stop(){cout<<"motorcycle has stopped"<<endl;}
    int main()
    {
    	vehicle v(1,2);
    	v.run();
    	v.stop();
    	bicycle b(1,2,3);
    	b.run();
    	b.stop();
    	motorcar m(1,2,3);
    	m.run();
    	m.stop();
    	motorcycle mo(1,2,3,4);
    	mo.run();
    	mo.stop();
    	return 0;
    }
    

      运行截图:

    Q3:fraction类

    思路:友元函数,我这道题有问题...我的基础不扎实...这我得承认...

    #include<iostream>
    using namespace std;
    class fraction
    {
    	public:
    		int tt(){return top;}
    		int bb(){return bottom;} 
    		fraction operator+(fraction& f2);
    		fraction operator-(fraction& f2);
    		fraction operator*(fraction& f2);
    		fraction operator/(fraction& f2);
    		fraction(int a,int b):top(a),bottom(b){}
    		friend void convertF();
    	private:
    		int top,bottom;
    };
    fraction fraction::operator+(fraction& f2)
    	return fraction(top+f2.top,bottom+f2.bottom);
    fraction fraction::operator-(fraction& f2)
    	return fraction(top-f2.top,bottom-f2.bottom);
    fraction fraction::operator*(fraction& f2)
    	return fraction(top*f2.top,bottom*f2.bottom);
    fraction fraction::operator/(fraction& f2)
    	return fraction(top*f2.bottom,bottom*f2.top);
    void convertF()
    	{
    		int k=top>bottom?top:bottom;
    		for(int i=k;i>=2;i--)
    		{
    			if(top%i==0&&bottom%i==0)
    			{
    				top=top/i;
    				bottom=bottom/i; 
    			} 
    			break;
    		}
    		cout<<top/bottom<<endl;
    	}
    	//构造完毕,yeah
    class ifraction:public fraction
    {
    	public:
    		ifraction(int a,int b,int c):fraction(b,c){num=c;}
    		friend void display();
    		friend void convertf();
    	private:
    		int num;
    }; 
    void ifraction::convertf()
    	{
    		int t=tt(),b=bb();
    		int m=t%b;
    		t=t-m*b;
    		int k=t>b?t:b;
    		for(int i=k;i>=2;i--)
    		{
    			if(t%i==0&&b%i==0)
    			{
    				t=t/i;
    				b=b/i; 
    			} 
    			break;
    		}
    		cout<<m<<"+"<<t/b<<endl;
    	}
    void display()
    {cout<<num<<"+"<<top/bottom<<endl;}
    int main()
    {
    	fraction f(2,4),f1(1,2),f3(0,0);
    	f3=f1+f2;
        cout<<f3.top<<"/"<<f3.bottom<<endl; 
    	f3=f1-f2;
    	cout<<f3.top<<"/"<<f3.bottom<<endl; 
    	f3=f1*f2;
    	cout<<f3.top<<"/"<<f3.bottom<<endl; 
    	f3=f1/f2;
    	cout<<f3.top<<"/"<<f3.bottom<<endl; 
    	return 0;
    }
  • 相关阅读:
    优化正则表达式的诀窍
    C#中的正则表达式
    正则表达式-- 零宽断言与懒惰匹配以及平衡组
    Match类
    RegexOptions枚举
    Regex类
    正则表达式-- 元字符
    正则表达式30分钟入门教程
    StreamReader与StreamWriter
    When do we pass arguments by reference or pointer?
  • 原文地址:https://www.cnblogs.com/fengmian/p/9153211.html
Copyright © 2011-2022 走看看