Advertisement
Guest User

fraction.cpp

a guest
Nov 19th, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. #include "Fraction.h"
  2. #include <exception>
  3.  
  4. using namespace std;
  5.  
  6. Fraction::Fraction(long value_numerator, long value_denominator) {
  7. numerator = value_numerator;
  8. denominator = value_denominator;
  9. fractionshort();
  10. }
  11.  
  12. long Fraction::nod(long a, long b) {
  13. if (!b)
  14. return a;
  15. return(nod(b, a % b));
  16.  
  17. }
  18.  
  19. void Fraction::fractionshort() {
  20. if (Get_Denominator() == 0) {
  21. throw "знаменатель не должен равняться нулю!";
  22. }
  23. if (Get_Denominator() < 0) {
  24. Set_Denominator (-Get_Denominator());
  25. Set_Numerator (-Get_Numerator());
  26. }
  27. long nodx = nod(Get_Numerator(), Get_Denominator());
  28. Set_Numerator(Get_Numerator()/nodx);
  29. Set_Denominator(Get_Denominator()/nodx);
  30. }
  31.  
  32.  
  33. Fraction::~Fraction() {};
  34.  
  35. long Fraction::Get_Numerator() const {
  36. return numerator;
  37. }
  38. void Fraction::Set_Numerator(long value_numerator) {
  39. numerator = value_numerator;
  40. //fractionshort();
  41. }
  42. long Fraction::Get_Denominator() const {
  43. return denominator;
  44. }
  45. void Fraction::Set_Denominator(long value_denominator) {
  46. if (value_denominator == 0) {
  47. throw "знаменатель не должен равняться нулю!";
  48. }
  49. denominator = value_denominator;
  50. }
  51.  
  52. double Fraction::value_fraction() const {
  53. return (double)numerator / (double)denominator;
  54. }
  55.  
  56. Fraction Fraction::operator+(const Fraction& f) const {
  57. return Fraction(numerator * f.denominator + f.numerator * denominator, denominator * f.denominator);
  58. }
  59.  
  60. Fraction Fraction::operator-(const Fraction& f) const {
  61. return Fraction(numerator * f.denominator - f.numerator * denominator, denominator * f.denominator);
  62. }
  63.  
  64. Fraction Fraction::operator*(const Fraction& f) const {
  65. return Fraction(numerator * f.numerator, denominator * f.denominator);
  66. }
  67.  
  68. Fraction Fraction::operator/ (const Fraction& f) const {
  69. if (f.numerator == 0) {
  70. throw "Возникло деление на ноль!";
  71. }
  72. return Fraction(numerator * f.denominator, denominator * f.numerator);
  73. }
  74.  
  75. Fraction Fraction::changeofsign(long numerator,long denominator){
  76. return Fraction(-numerator, denominator);
  77. }
  78.  
  79. bool Fraction::operator==(const Fraction& f) const {
  80. return ((Get_Numerator() == f.Get_Numerator()) && (Get_Denominator() == f.Get_Denominator()));
  81. }
  82.  
  83. bool Fraction::operator!=(const Fraction& f) const {
  84. return ((Get_Numerator() != f.Get_Numerator()) && (Get_Denominator() != f.Get_Denominator()));
  85. }
  86.  
  87. bool Fraction::operator>(const Fraction& f) const {
  88. return ((Get_Numerator() * f.Get_Denominator() - Get_Denominator() * f.Get_Numerator()) > 0);
  89. }
  90.  
  91. bool Fraction::operator<(const Fraction& f) const {
  92. return ((Get_Numerator() * f.Get_Denominator() - Get_Denominator() * f.Get_Numerator()) < 0);
  93. }
  94.  
  95. bool Fraction::operator>=(const Fraction& f) const {
  96. return ((Get_Numerator() * f.Get_Denominator() - Get_Denominator() * f.Get_Numerator()) >= 0);
  97. }
  98.  
  99. bool Fraction::operator<=(const Fraction& f) const {
  100. return ((Get_Numerator() * f.Get_Denominator() - Get_Denominator() * f.Get_Numerator()) <= 0);
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement