Консультация № 189398
17.05.2016, 15:48
0.00 руб.
0 0 0
Здравствуйте! У меня возникли сложности с таким вопросом:

Помогите пожалуйста создать иерархии классов с использованием абстрактного класса.

Код:
Pair.h:


#pragma once
#include <iostream>
class Pair {
public:
Pair(void);
Pair (int, int);
~Pair(void);
bool isequal ();
int multiply ();
friend Pair operator- (const Pair&, const Pair&);
friend std::ostream& operator<< (std::ostream& out, Pair& p);
int a, b;
};


class Rational : public Pair {
public:
friend Rational operator+ (const Rational&, const Rational&);
friend Rational operator/ (const Rational&, const Rational&);
friend Rational operator- (const Rational&, const Rational&);
Rational (int, int);


};






Pair.cpp:
#include "stdafx.h"
#include "Pair.h"




Pair::Pair(int a, int b) {
this->a=a;
this->b=b;
}


Pair::Pair (void) {
a=0;
b=0;
}


Pair::~Pair(void) {
}


std::ostream& operator<< (std::ostream& out, Pair& p) {
out << "("<<p.a<<", "<<p.b<<")";
return out;
}


bool Pair::isequal () {
return (a==b);
}


int Pair::multiply () {
return a*b;
}


Pair operator- (const Pair& q1, const Pair& q2) {
return Pair (q1.a-q1.b, q2.a-q2.b);
}


Rational::Rational (int a, int b) {
this->a=a;
this->b=b;
}


Rational operator+ (const Rational& q1, const Rational& q2) {
return Rational (q1.a*q2.b+q1.b*q2.a, q1.b*q2.b);
}


Rational operator/ (const Rational& q1, const Rational& q2) {
return Rational (q1.a*q2.b, q1.b*q2.a);
}


Rational operator- (const Rational& q1, const Rational& q2) {
return Rational (q1.a*q2.b-q1.b*q2.a, q1.b*q2.b);
}


exam.cpp:


#include "stdafx.h"
#include <iostream>
#include "Pair.h"


int main () {
setlocale(LC_ALL,"Russian");
Pair q (10, 9);
if (q.isequal()) std::cout << "Числа равны\n";
else std::cout << "Числа не равны\n";
std::cout << "Произведение полей равно " << q.multiply ();
std::cout <<"\n";
Pair q1 (10, 4);
Pair q2 (5, 1);
Pair q3=q1-q2;
std::cout << q3<<"\n";


Rational w1 (4, 1);
Rational w2 (5, 5);
Rational w3=w1-w2;
std::cout << "Разность пар "<< w1 << " и "<<w2<<" равно "<<"\n";
std::cout << w3<<"\n";
Rational e1 (8, 1);
Rational e2 (3, 4);
std::cout << "Сумма пар "<< e1 << " и "<<e2<<" равно "<<"\n";
Rational e3=e1+e2;
std::cout << e3<<"\n";
Rational r1 (9, 0);
Rational r2 (3, 3);
std::cout << "Частное пар "<< r1 << " и "<<r2<<" равно "<<"\n";
Pair r3=r1/r2;
std::cout << r3<<"\n";
return 0;
}

Обсуждение

Форма ответа