Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. public class Rational
  2. {
  3. private int m_Denominator = 0;
  4. private int m_Divider = 1;
  5.  
  6. public float Value { get => (float)m_Denominator / m_Divider; }
  7.  
  8. public Rational() { }
  9. public Rational(int up) { m_Denominator = 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_Denominator = up; m_Divider = Math.Abs(down);
  18. }
  19.  
  20. static public Rational operator+ (Rational r1)
  21. {
  22. return new Rational(+r1.m_Denominator, +r1.m_Divider);
  23. }
  24.  
  25. static public Rational operator- (Rational r1)
  26. {
  27. return new Rational(-r1.m_Denominator, -r1.m_Divider);
  28. }
  29.  
  30. #region DefaultMath
  31. static public Rational operator+ (Rational r1, Rational r2)
  32. {
  33. return new Rational(r1.m_Denominator + r2.m_Denominator, r1.m_Divider + r2.m_Divider);
  34. }
  35.  
  36. static public Rational operator- (Rational r1, Rational r2)
  37. {
  38. return new Rational(r1.m_Denominator - r2.m_Denominator, r1.m_Divider - r2.m_Divider);
  39. }
  40.  
  41. static public Rational operator* (Rational r1, Rational r2)
  42. {
  43. return new Rational(r1.m_Denominator * r2.m_Denominator, r1.m_Divider * r2.m_Divider);
  44. }
  45.  
  46. static public Rational operator/ (Rational r1, Rational r2)
  47. {
  48. return new Rational(r1.m_Denominator / r2.m_Divider, r1.m_Divider / r2.m_Denominator);
  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_Denominator} Divider = {r1.m_Divider}";
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement