chiva13

Untitled

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