class F{ private: int m,n; public: F(int,int); int add(); }; class A:public F{ private: int m,n; public: A(int,int); int sub(); }; class B:public F{ private: int m,n; public: B(int,int); int mul(); }; class C:public F{ private: int m,n; public: C(int,int); int div(); };
#include"F.h" F::F(int m0,int n0):m(m0),n(n0){} int F::add(){ return m+n; } A::A(int m0,int n0):m(m0),n(n0),F(m0,n0){} int A::sub(){ return m-n; } B::B(int m0,int n0):m(m0),n(n0),F(m0,n0){} B::mul(){ return m*n; } C::C(int m0,int n0):m(m0),n(n0),F(m0,n0){} C::div(){ return m/n; }
#include<iostream> #include"F.h" using namespace std; int main(){ A a(9,3); B b(9,3); C c(9,3); cout<<a.sub()<<" "<<a.add()<<endl; cout<<b.mul()<<" "<<b.add()<<endl; cout<<c.div()<<" "<<c.add()<<endl; return 0; }
#pragma once #include<iostream> using namespace std; class Fraction { private: int top; int bottom; public: Fraction(); Fraction(int t); Fraction(int t, int b); Fraction operator+(const Fraction &p); Fraction operator-(const Fraction &p); Fraction operator*(const Fraction &p); Fraction operator/(const Fraction &p); friend void convertF(int *x,int *y); friend ostream & operator<<(ostream &out, const Fraction &p); void ip(); };
#pragma once #include"Fraction.h" class iFraction :virtual public Fraction { private: int m, n; public: iFraction(int x,int y):m(x),n(y),Fraction(x,y){} friend void convertF(int *x,int *y); };
#include"Fraction.h" #include<iostream> #include<cmath> using namespace std; Fraction::Fraction() :top(0), bottom(1) { } Fraction::Fraction(int t) : top(t), bottom(1) { } Fraction::Fraction(int t, int b) : top(t), bottom(b) { } Fraction Fraction::operator+(const Fraction &p) { int x = top * p.bottom + p.top*bottom; int y = bottom * p.bottom; return Fraction(x, y); } Fraction Fraction::operator-(const Fraction &p) { int x = top * p.bottom - p.top*bottom; int y = bottom * p.bottom; return Fraction(x, y); } Fraction Fraction::operator*(const Fraction &p) { int x = top * p.top; int y = bottom * p.bottom; return Fraction(x, y); } Fraction Fraction::operator/(const Fraction &p) { int x = top * p.bottom; int y = p.top*bottom; return Fraction(x, y); } void Fraction::ip() { cout << "输入分子" << endl; cin >> top; int bo; cout << "输入分母" << endl; cin >> bo; while (bo == 0) { cout << "请重新输入" << endl; cin >> bo; } bottom = bo; }
#include"iFraction.h" #include<iostream> #include<cmath> using namespace std; int gct(int a, int b) { return a % b == 0 ? b : gct(b, a%b); } void convertF(int *x,int *y) { if (*y<0) { *y *= -1; *x *= -1; } int g = gct(abs(*x), abs(*y)); *x /= g; *y /= g; } ostream & operator<<(ostream &out, const Fraction &p) { int x =p.top; int y =p.bottom; convertF(&x,&y); int z = x / y; if (x == 0) out << "0"; else if (x == y) out << "1"; else if (x > y) out <<"("<<z<<")" << x - z * y << "/" << y; else out <<x << "/" <<y; return out; } int main() { Fraction a; Fraction b; iFraction d(7, 6); cout << d << endl; a.ip(); b.ip(); Fraction c; c = a + b; cout << c << endl; c = a - b; cout << c << endl; c = a * b; cout << c << endl; c = a / b; cout << c << endl; return 0; }
#pragma once class Vehicle { private: int maxspeed, weight; public: Vehicle(int, int); Vehicle(Vehicle &p); void run(); void stop(); ~Vehicle() {} };
#pragma once #include"vehicle.h" class Bicycle :virtual public Vehicle{ private: int height; public: Bicycle(int x,int y,int z):height(x),Vehicle(y,z){} ~Bicycle(){} };
#pragma once #include"vehicle.h" class Motorcar :virtual public Vehicle { private: int seatnum; public: Motorcar(int x,int y,int z):seatnum(x),Vehicle(y,z){} ~Motorcar(){} };
#include"vehicle.h" #include<iostream> using namespace std; Vehicle::Vehicle(int x, int y) :maxspeed(x),weight(y){ } Vehicle::Vehicle(Vehicle &p) { maxspeed = p.maxspeed; weight = p.weight; } void Vehicle::run(){ cout << "run" << endl; } void Vehicle::stop(){ cout << "stop" << endl; }
#include<iostream> #include"motorcycle.h" using namespace std; int main() { Vehicle car(1, 1); Vehicle car2(car); Bicycle bike(1, 1, 1); Motorcar motorcar(1, 1, 1); Motorcycle motorcycle(1, 1, 1, 1, 1, 1); car.run(); bike.stop(); }
#pragma once #include"bicycle.h" #include"motorcar.h" class Motorcycle :virtual public Bicycle, virtual public Motorcar { public: Motorcycle(int x, int y,int z, int a, int b,int c) :Vehicle(x,y),Bicycle(x, y,z), Motorcar(a, b,c) {} ~Motorcycle(){} };