Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement