chiva13

Untitled

Aug 31st, 2014
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.17 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. class Distance
  4. {
  5. protected:
  6.  
  7. public:
  8.     int feet;
  9.     float inches;
  10.     Distance()
  11.     {
  12.         feet=0;
  13.         inches=0.0;
  14.     }
  15.     Distance(int ft, float inc )
  16.     {
  17.         feet=ft;
  18.         inches=inc;
  19.     }
  20.    
  21.     void get_distance()
  22.     {
  23.         cout << "write feets: \n";
  24.         cin >> feet;
  25.         cout << "write inches: \n";
  26.         cin >> inches;
  27.     }
  28.    
  29.     void show_distance()
  30.     {
  31.         cout << feet << "\'" << inches << '\"'<<endl;
  32.     }
  33.    
  34.     ~Distance() {}
  35. };
  36.  
  37. class SubClass:public Distance
  38. {
  39. private:
  40.  
  41. public:
  42.     Distance operator+(Distance d2) const
  43.     {
  44.         int f = feet + d2.feet;
  45.         float i = inches + d2.inches;
  46.         if (i >=12.0){
  47.             i -= 12.0;
  48.             f++;
  49.         }
  50.         return Distance(f,i);
  51.     }
  52.  
  53.     Distance operator-(Distance d2) const
  54.     {
  55.         if ( (d2.feet>feet) || ( (d2.feet==feet) && (d2.inches>inches) ) ){
  56.             cout<<"subtraction is not possible"<<endl;
  57.             return Distance(0,0);
  58.         }
  59.         else
  60.         {
  61.             int f = feet - d2.feet;
  62.             float i=0;
  63.             if (d2.inches > inches){
  64.                 i += 12.0;
  65.                 f--;
  66.             }
  67.             i  = i+inches - d2.inches;
  68.             return Distance(f,i);
  69.         }
  70.     }
  71.  
  72.     Distance operator*(int a)
  73.     {
  74.         inches=inches*a;
  75.         feet=feet*a;
  76.         while(inches>=12){
  77.             inches -= 12.0;
  78.             feet++;
  79.         }
  80.         return Distance(feet,inches);
  81.     }
  82.  
  83.     Distance operator/(int a)
  84.     {
  85.         inches=inches+feet*12;
  86.         feet=0;
  87.         inches=inches/2;
  88.         while(inches>=12){
  89.             inches -= 12.0;
  90.             feet++;
  91.         }
  92.         return Distance(feet,inches);
  93.     }
  94.  
  95.     void operator+=(Distance d2)
  96.     {
  97.         feet += d2.feet;
  98.         inches += d2.inches;
  99.         if (inches >=12.0){
  100.             inches -= 12.0;
  101.             feet++;
  102.         }
  103.     }
  104.  
  105.     void operator-=(Distance d2)
  106.     {
  107.         if ((d2.feet>feet) || ((d2.feet==feet)&&(d2.inches>inches))){
  108.             cout<<"subtraction is not possible"<<endl;
  109.         }
  110.         else
  111.         {
  112.             feet -= d2.feet;
  113.             if (inches<d2.inches){
  114.                 feet--;
  115.                 inches+=12;
  116.             }
  117.             inches -= d2.inches;
  118.         }
  119.     }
  120.  
  121.     void operator*=(int a)
  122.     {
  123.         inches=inches*a;
  124.         feet=feet*a;
  125.         if(inches>=12){
  126.             inches -= 12.0;
  127.             feet++;
  128.         }
  129.     }
  130.  
  131.     void operator/=(int a)
  132.     {
  133.         inches=inches+feet*12;
  134.         feet=0;
  135.         inches=inches/2;
  136.         while(inches>=12){
  137.             inches -= 12.0;
  138.             feet++;
  139.         }
  140.     }
  141.  
  142.     bool operator<( Distance d2 )
  143.     {
  144.         float bf1 = feet + inches / 12;
  145.         float bf2 = d2.feet + d2.feet / 12;
  146.         return (bf1 < bf2) ? true : false;
  147.     }
  148.  
  149.     bool operator>( Distance d2 )
  150.     {
  151.         float bf1 = feet + inches / 12;
  152.         float bf2 = d2.feet + d2.feet / 12;
  153.         return (bf1 > bf2) ? true : false;
  154.     }
  155.  
  156.     bool operator<=( Distance d2 )
  157.     {
  158.         float bf1 = feet + inches / 12;
  159.         float bf2 = d2.feet + d2.feet / 12;
  160.         return (bf1 <= bf2) ? true : false;
  161.     }
  162.  
  163.     bool operator>=( Distance d2 )
  164.     {
  165.         float bf1 = feet + inches / 12;
  166.         float bf2 = d2.feet + d2.feet / 12;
  167.         return (bf1 >= bf2) ? true : false;
  168.     }
  169.  
  170.     bool operator==( Distance d2 )
  171.     {
  172.         float bf1 = feet + inches / 12;
  173.         float bf2 = d2.feet + d2.feet / 12;
  174.         return (bf1 == bf2) ? true : false;
  175.     }
  176.  
  177.     bool operator!=( Distance d2 )
  178.     {
  179.         float bf1 = feet + inches / 12;
  180.         float bf2 = d2.feet + d2.feet / 12;
  181.         return (bf1 != bf2) ? true : false;
  182.     }
  183. };
  184. int main()
  185. {
  186.     SubClass x;
  187.     SubClass y;
  188.  
  189.     x.get_distance();
  190.     x.show_distance();
  191.     y.get_distance();
  192.     y.show_distance();
  193.     x-=y;
  194.     x.show_distance();
  195.    
  196.     return 0;
  197. }
Advertisement
Add Comment
Please, Sign In to add comment