SHARE
TWEET

Untitled

a guest Jun 18th, 2019 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // frengl.cpp
  2. // Дружественная перегружаемая операция +
  3. #include <iostream>
  4. using namespace std;
  5. ///////////////////////////////////////////////////////////
  6. class Distance                //Класс английских расстояний
  7.   {
  8.   private:
  9.     int feet;
  10.     float inches;
  11.   public:
  12.     Distance()                //конструктор без аргументов
  13.       { feet = 0; inches = 0.0; }
  14.     Distance( float fltfeet ) //конструктор (1 арг.)
  15.       {    //Переводит float в Distance
  16.       feet = int(fltfeet);    //feet – целая часть
  17.       inches = 12*(fltfeet-feet); //слева - дюймы
  18.       }
  19.     Distance(int ft, float in)    //конструктор (2 арг.)
  20.       { feet = ft; inches = in; }
  21.     void showdist()              //Вывести длину
  22.       { cout << feet << "\'-" << inches << '\"';}
  23.     friend Distance operator + (Distance, Distance); //дружественный
  24.   };
  25. //---------------------------------------------------------
  26.  
  27. Distance operator + (Distance d1, Distance d2) // d1 + d2
  28.   {
  29.   int f = d1.feet + d2.feet;       //+ футы
  30.   float i = d1.inches + d2.inches; //+ дюймы
  31.   if(i >= 12.0)                    //если больше 12 дюймов,
  32.     { i -= 12.0; f++;  }           //уменьшить на 12 дюймов,
  33.                                    //прибавить 1 фут
  34.   return Distance(f,i);            //Новая длина с суммой
  35.   }
  36. //---------------------------------------------------------
  37. int main()
  38.   {
  39.   Distance d1 = 2.5;         //конструктор переводит
  40.   Distance d2 = 1.25;        //float-feet в Distance
  41.   Distance d3;
  42.   cout << "\nd1 = "; d1.showdist();
  43.   cout << "\nd2 = "; d2.showdist();
  44.  
  45.   d3 = d1 + 10.0;            //distance + float: OK
  46.   cout << "\nd3 = "; d3.showdist();
  47.   d3 = 10.0 + d1;            //float + Distance: OK
  48.   cout << "\nd3 = "; d3.showdist();
  49.   cout << endl;
  50.   return 0;
  51.   }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top