Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. public class Rational
  2. {
  3. private int m_Up = 0;
  4. private int m_Down = 1;
  5.  
  6. public float Value { get => (float)m_Up / m_Down; }
  7.  
  8. public Rational() { }
  9. public Rational(int up) { m_Up = up; }
  10. public Rational(int up, int down)
  11. {
  12. if (down == 0)
  13. {
  14. MessageBox.Show("division by zero, value = default");
  15. return;
  16. }
  17. m_Up = up; m_Down = Math.Abs(down);
  18. }
  19.  
  20. static public Rational operator+ (Rational r1)
  21. {
  22. return new Rational(+r1.m_Up, +r1.m_Down);
  23. }
  24.  
  25. static public Rational operator- (Rational r1)
  26. {
  27. return new Rational(-r1.m_Up, -r1.m_Down);
  28. }
  29.  
  30. #region DefaultMath
  31. static public Rational operator+ (Rational r1, Rational r2)
  32. {
  33. return new Rational(r1.m_Up + r2.m_Up, r1.m_Down + r2.m_Down);
  34. }
  35.  
  36. static public Rational operator- (Rational r1, Rational r2)
  37. {
  38. return new Rational(r1.m_Up - r2.m_Up, r1.m_Down - r2.m_Down);
  39. }
  40.  
  41. static public Rational operator* (Rational r1, Rational r2)
  42. {
  43. return new Rational(r1.m_Up * r2.m_Up, r1.m_Down * r2.m_Down);
  44. }
  45.  
  46. static public Rational operator/ (Rational r1, Rational r2)
  47. {
  48. return new Rational(r1.m_Up / r2.m_Up, r1.m_Down / r2.m_Down);
  49. }
  50. #endregion
  51.  
  52. #region MathWithInt
  53. static public Rational operator +(Rational r1, int i2)
  54. {
  55. return r1 + new Rational(i2);
  56. }
  57.  
  58. static public Rational operator -(Rational r1, int i2)
  59. {
  60. return r1 - new Rational(i2);
  61. }
  62.  
  63. static public Rational operator *(Rational r1, int i2)
  64. {
  65. return r1 * new Rational(i2);
  66. }
  67.  
  68. static public Rational operator /(Rational r1, int i2)
  69. {
  70. return r1 / new Rational(i2);
  71. }
  72. #endregion
  73.  
  74. static public implicit operator float (Rational r1)
  75. {
  76. return r1.Value;
  77. }
  78.  
  79. static public implicit operator string(Rational r1)
  80. {
  81. return $"Value = {r1.Value} Denominator = {r1.m_Up} Denominator = {r1.m_Down}";
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement