Rational_numbers.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. // Rational_numbers.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. #include <iostream>
  3. #include "Rational.h"
  4. using namespace std;
  5. //решение
  6. void resh(Rational, Rational, Rational);
  7. //проверка класса
  8. void check();
  9. int main() {
  10. Rational r = Rational(5.0/2.0),r2=Rational(3,6);
  11. cout << r2 << endl;
  12. cout << r << endl;
  13. //check();
  14. //сделаны основные операции (минимум, который сдаётся до пятницы). К сожалению пока немного в тупике с решением. т.к. не знаю как перевести double
  15. //resh(Rational(2, 3), Rational(-1, 3), Rational(-1, 3));
  16. //Rational a, b, c;
  17. //cout << "enter a=... b=... c=... \n";
  18. //cin >> a >> b >> c;
  19. //resh(a, b, c);
  20. //
  21. }
  22. void check()
  23. {
  24. cout << "Hello World!\n";
  25. Rational r, r2;
  26. cin >> r >> r2;
  27. cout << r << endl << endl << endl << r2 << endl << endl << endl;
  28. cout << "/" << endl;
  29. Rational eq = r / r2;
  30. cout << endl << endl << eq << endl << endl;
  31. cout << "*" << endl;
  32. eq = r * r2;
  33. cout << endl << endl << eq << endl << endl;
  34. cout << "+" << endl;
  35. eq = r + r2;
  36. cout << endl << endl << eq << endl << endl;
  37. cout << "-" << endl;
  38. eq = r - r2;
  39. cout << endl << endl << eq << endl << endl;
  40. bool tr = r > r2;
  41. cout << " > " << tr << endl;
  42. tr = r < r2;
  43. cout << " < " << tr << endl;
  44. tr = r >= r2;
  45. cout << " >= " << tr << endl;
  46. tr = r <= r2;
  47. cout << " <= " << tr << endl;
  48. tr = r == r2;
  49. cout << " == " << tr << endl;
  50. tr = r != r2;
  51. cout << " != " << tr << endl;
  52. cout << "rooot " << r.root() << endl;
  53. cout << "from int \n";
  54. Rational k = Rational(4,3);
  55. int x = 2;
  56. Rational eq_k;
  57. cout << k << endl << endl;
  58. cout << "*" << x << endl;
  59. eq_k = k * x;
  60. cout << endl << endl << eq_k << endl << endl;
  61. cout << "+" << x << endl;
  62. eq_k = k + x;
  63. cout << endl << endl << eq_k << endl << endl;
  64. cout << "-" << x << endl;
  65. eq_k = k - x;
  66. cout << endl << endl << eq_k << endl << endl;
  67. cout << "/" << x << endl;
  68. eq_k = k / x;
  69. cout << endl << endl << eq_k << endl << endl;
  70. }
  71. void resh(Rational a, Rational b, Rational c) {
  72. Rational D, ac;
  73. Rational ans[2] ;
  74. ac = a * c;
  75. ac *= 4;
  76. cout << ac << endl;
  77. D = (b * b);
  78. //cout << D << endl;
  79. D = D-ac;
  80. if (D >= 0) {
  81. Rational x1 = b * (-1), x2 = b * (-1);
  82. cout << D << endl;
  83. x1 -=Rational( D.root());
  84. x2 +=Rational( D.root());
  85. x1 /= (a*2);
  86. x2 /= (a * 2);
  87. cout << "x1:\n" << x1 << endl << "x2:\n" << x2 << endl;
  88. }
  89. else {
  90. cout << "no rational anser \n";
  91. }
  92. }
  93. //void main() {
  94. // double a = 1.616161;
  95. // a = 12.0 / 5.0;
  96. // //0x10000000000000
  97. // unsigned long long int bits = *(unsigned long long int*)(&a);
  98. // bool sign = bits >> 63;
  99. // long long int mant = (bits & 0xFFFFFFFFFFFFF) | 0x10000000000000;
  100. // long long exp = (bits >> 52) & 0x7ff;
  101. // exp -= 1075;
  102. //
  103. // //cout << hex << sign << '\t' << hex << mant << '\t' << hex << exp << '\t' << dec << bits << '\t' << hex << bits << '\n';
  104. //
  105. // long long t = ((long long int)1<<52);
  106. // //cout <<hex << t;
  107. // long long num, denum;
  108. // num = sign ? mant : mant;
  109. // denum = ((long long)2 << -exp);
  110. // cout << a << '\t' << num << '\t' << denum << endl;
  111. //}