Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Distance
- {
- protected:
- public:
- int feet;
- float inches;
- Distance()
- {
- feet=0;
- inches=0.0;
- }
- Distance(int ft, float inc )
- {
- feet=ft;
- inches=inc;
- }
- void get_distance()
- {
- cout << "write feets: \n";
- cin >> feet;
- cout << "write inches: \n";
- cin >> inches;
- }
- void show_distance()
- {
- cout << feet << "\'" << inches << '\"'<<endl;
- }
- ~Distance() {}
- };
- class SubClass:public Distance
- {
- private:
- public:
- Distance operator+(Distance d2) const
- {
- int f = feet + d2.feet;
- float i = inches + d2.inches;
- if (i >=12.0){
- i -= 12.0;
- f++;
- }
- return Distance(f,i);
- }
- Distance operator-(Distance d2) const
- {
- if ( (d2.feet>feet) || ( (d2.feet==feet) && (d2.inches>inches) ) ){
- cout<<"subtraction is not possible"<<endl;
- return Distance(0,0);
- }
- else
- {
- int f = feet - d2.feet;
- float i=0;
- if (d2.inches > inches){
- i += 12.0;
- f--;
- }
- i = i+inches - d2.inches;
- return Distance(f,i);
- }
- }
- Distance operator*(int a)
- {
- inches=inches*a;
- feet=feet*a;
- while(inches>=12){
- inches -= 12.0;
- feet++;
- }
- return Distance(feet,inches);
- }
- Distance operator/(int a)
- {
- inches=inches+feet*12;
- feet=0;
- inches=inches/2;
- while(inches>=12){
- inches -= 12.0;
- feet++;
- }
- return Distance(feet,inches);
- }
- void operator+=(Distance d2)
- {
- feet += d2.feet;
- inches += d2.inches;
- if (inches >=12.0){
- inches -= 12.0;
- feet++;
- }
- }
- void operator-=(Distance d2)
- {
- if ((d2.feet>feet) || ((d2.feet==feet)&&(d2.inches>inches))){
- cout<<"subtraction is not possible"<<endl;
- }
- else
- {
- feet -= d2.feet;
- if (inches<d2.inches){
- feet--;
- inches+=12;
- }
- inches -= d2.inches;
- }
- }
- void operator*=(int a)
- {
- inches=inches*a;
- feet=feet*a;
- if(inches>=12){
- inches -= 12.0;
- feet++;
- }
- }
- void operator/=(int a)
- {
- inches=inches+feet*12;
- feet=0;
- inches=inches/2;
- while(inches>=12){
- inches -= 12.0;
- feet++;
- }
- }
- bool operator<( Distance d2 )
- {
- float bf1 = feet + inches / 12;
- float bf2 = d2.feet + d2.feet / 12;
- return (bf1 < bf2) ? true : false;
- }
- bool operator>( Distance d2 )
- {
- float bf1 = feet + inches / 12;
- float bf2 = d2.feet + d2.feet / 12;
- return (bf1 > bf2) ? true : false;
- }
- bool operator<=( Distance d2 )
- {
- float bf1 = feet + inches / 12;
- float bf2 = d2.feet + d2.feet / 12;
- return (bf1 <= bf2) ? true : false;
- }
- bool operator>=( Distance d2 )
- {
- float bf1 = feet + inches / 12;
- float bf2 = d2.feet + d2.feet / 12;
- return (bf1 >= bf2) ? true : false;
- }
- bool operator==( Distance d2 )
- {
- float bf1 = feet + inches / 12;
- float bf2 = d2.feet + d2.feet / 12;
- return (bf1 == bf2) ? true : false;
- }
- bool operator!=( Distance d2 )
- {
- float bf1 = feet + inches / 12;
- float bf2 = d2.feet + d2.feet / 12;
- return (bf1 != bf2) ? true : false;
- }
- };
- int main()
- {
- SubClass x;
- SubClass y;
- x.get_distance();
- x.show_distance();
- y.get_distance();
- y.show_distance();
- x-=y;
- x.show_distance();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment