c++ 实验六

1.芯片

class  xinpian{
 public:
  xinpian(int m0,int n0);
  void jia();
 private:
  int m;
  int n;
 
};

class xinpianA:public xinpian{
 public:
  xinpianA(int m0,int n0);
  void jian();
 private:
      int m;
   int n; 
};
class xinpianB:public xinpian{
 public:
  xinpianB(int m0,int n0);
  void chen();
 private:
      int m;
   int n; 
};
class xinpianC:public xinpian{
 public:
  xinpianC(int m0,int n0);
  void chu();
 private:
      int m;
   int n; 
};

 

#include"xinpian.h"
#include<iostream>
using namespace std;
xinpian::xinpian(int m0,int n0):m(m0),n(n0){
};
void xinpian::jia(){
 cout<<m+n<<endl;
};
xinpianA::xinpianA(int m0,int n0):xinpian(m0,n0),m(m0),n(n0){
};
void xinpianA::jian(){
 cout<<m-n<<endl;
};
xinpianB::xinpianB(int m0,int n0):xinpian(m0,n0),m(m0),n(n0){
};
void xinpianB::chen(){
 cout<<m*n<<endl;
};
xinpianC::xinpianC(int m0,int n0):xinpian(m0,n0),m(m0),n(n0){
};
void xinpianC::chu(){
 cout<<m/n<<endl;
}

 

#include"xinpian.h"
#include<iostream>
using namespace std;
int main()
{
 xinpianA A(5,2);
 A.jia();
 A.jian();
 xinpianB B(6,3);
 B.jia();
 B.chen();
 xinpianC C(7,4);
 C.jia();
 C.chu();
 return 0;
 
}

 

2,

//vehicle.h
class vehicle{
 public:
  vehicle(int max, int wei);
  void run();
  void stop();
  int maxspeed;
  int weight;
  ~vehicle();
};

class bicycle: virtual public vehicle{
 public:
  bicycle(int max, int wei, int hei);
  int height;
  ~bicycle();
};

class motorcar: virtual public vehicle{
 public:
  motorcar(int max,int wei, int sea);
  int seatnum;
  ~motorcar();
};
 
class motorcycle: public bicycle, public motorcar{
 public:
  int max;
  int wei;
  int hei;
  int sea;
  motorcycle(int max,int wei,int hei,int sea);
  ~motorcycle(); 
};

//vehicle.cpp
#include"vehicle.h"
#include<iostream>
using namespace std;
void vehicle::run(){
 cout<<"run"<<endl;
}
void vehicle::stop(){
 cout<<"stop"<<endl;
}
vehicle::vehicle(int max,int wei){
 maxspeed=max;
 weight=wei;
 cout<<maxspeed<<" "<<weight<<" vehicle constrcting"<<endl;
}
vehicle::~vehicle(){
 cout<<"vehicle destructing"<<endl;
}
bicycle::bicycle(int max, int wei, int hei):vehicle(max,wei),height(hei){
 cout<<maxspeed<<" "<<weight<<" "<<height<<" bicycle constrcting"<<endl;
}
bicycle::~bicycle(){
 cout<<"bicycle destructing"<<endl;
}
motorcar::motorcar(int max,int wei, int sea):vehicle(max,wei),seatnum(sea){
 cout<<maxspeed<<" "<<weight<<" "<<seatnum<<" motorcar constrcting"<<endl;
}
motorcar::~motorcar(){
 cout<<"motorcar destructing"<<endl;
}
motorcycle::motorcycle(int max,int wei,int hei,int sea):vehicle(max,wei),bicycle(max,wei,hei),motorcar(max,wei,sea){
    cout<<maxspeed<<" "<<weight<<" "<<height<<" "<<seatnum<<" motorcycle constructing"<<endl; 
}
motorcycle::~motorcycle(){
 cout<<"motorcycle destructing"<<endl;
}

//main.cpp
#include"vehicle.h"
#include<iostream>
using namespace std;
int main(){
 motorcycle mo(1,2,3,4);
 mo.run();
 mo.stop();
 return 0; 
}

 

 

3,Fraction

//fraction.h
#include<iostream>
using namespace std;
class Fraction{
 public:
  Fraction();
  Fraction(int a ,int b);
  Fraction(int a);
  Fraction operator +(const Fraction &c2)const;
     Fraction operator -(const Fraction &c2)const;
     Fraction operator *(const Fraction &c2)const;
     Fraction operator /(const Fraction &c2)const;
  friend ostream & operator<<(ostream &out, const Fraction &c);
  void get();
 private:
     int top;
  int bottom;
 
};
class iFraction:public Fraction{
 public:
  iFraction(int x,int y);
  void show();
  int top1;
  int bottom1;
  friend void convertF(const iFraction &c);
  }; 

 

//fraction.cpp
#include"fraction.h"
#include<iostream>
using namespace std;
Fraction::Fraction() :top(0), bottom(1) {
}
Fraction::Fraction(int a) : top(1), bottom(a) {
}
Fraction::Fraction(int a, int b) : top(a), bottom(b) {
}
Fraction Fraction::operator +(const Fraction &c2)const{
return Fraction(top*c2.bottom+bottom*c2.top,bottom*c2.bottom);
}
Fraction Fraction::operator -(const Fraction &c2)const{
return Fraction(top*c2.bottom-bottom*c2.top,bottom*c2.bottom);
}
Fraction Fraction::operator *(const Fraction &c2)const{
return Fraction(top*c2.top,bottom*c2.bottom);
}
Fraction Fraction::operator /(const Fraction &c2)const{
return Fraction(top*c2.bottom,bottom*c2.top);
}
ostream & operator<<(ostream &out, const Fraction &c){
 if(c.top==0)
 out<<"0";
 else
 out<<c.top<<"/"<<c.bottom;
 return out;
}
void Fraction::get(){
 int x,y;
 cout<<"get the top and bottom"<<endl;
 cin>>x>>y;
 top=x;
 bottom=y;
}
iFraction::iFraction(int x,int y):Fraction(x,y),top1(x),bottom1(y){ 
}
void iFraction::show(){
 cout<<top1<<"/"<<bottom1<<endl;
}
void convertF(const iFraction &c){
 if(c.top1==c.bottom1)
 cout<<"1"<<endl;
 if(c.top1>c.bottom1)
 {
  int m,n;
  m=c.top1/c.bottom1;
  n=c.top1%c.bottom1;
  cout<<"("<<m<<")"<<n<<"/"<<c.bottom1<<endl;
 } 
}

 

//main.cpp
#include"fraction.h"
#include<iostream>
using namespace std;
int main()
{
 Fraction a;
 Fraction b(5);
 Fraction c(2,3);
 iFraction d(4,5);
 iFraction e(7,3);
    cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
    d.get();
    cout<<d<<endl;
    d.show();
    c=a+b;
    cout<<c<<endl;
    c=a-b;
    cout<<c<<endl;
    c=b*d;
    cout<<c<<endl;
    c=b/d;
    cout<<c<<endl;
    convertF(e);
 return 0;
}

 

 

 本次实验在实验三时发现iFraction的对象d在通过get()改变后,show()和cout 显示的结果却不一样,发现get()只是改了基类的数据成员,可把get()改成iFraction的成员函数时却报错???,

 

posted @ 2018-05-31 22:13  童梦奇缘  阅读(153)  评论(0)    收藏  举报