Advertisement
DenCoder618

main.cpp

May 25th, 2022
550
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Создайте класс Rational (рациональная дробь)
  2.  
  3. // TODO:
  4. // приватные поля для данных
  5. // конструктор, содержащий значения по умолчанию
  6. // функции-элементы установки и извлечения значений
  7. // перегруженные операторы ввода и вывода
  8. // конструктор копий
  9. // оператор присваивания
  10.  
  11. // указанные в задании перегруженные операции
  12. // ++ -- -n == != = + += - -= * *= / /= > < >= <=
  13.  
  14. //  НЕ ДОП:
  15. //*  - поправить вывод
  16. //*  - !!!учесть отрицательные числа
  17. //  ДОП:
  18. //* - добавить целую часть (в сам класс)
  19. //* - операции, соотв., с учетом целой части дробей
  20. //*  - сортировка Шелла массива дробей
  21.  
  22. #include "rational.h"
  23. using namespace std;
  24.  
  25. // тестирование функций класса
  26. int main()
  27. {
  28.     int test_n = 0;
  29.     cout << "Run test #";
  30.     cin >> test_n;
  31.  
  32.     switch (test_n)
  33.     {
  34.     case 0: // test
  35.     {
  36.         Rational r1(-11205729, 14420), r2(3349, 14420), r3(11207689, 14420), r4(5439, 103);
  37.         cout << r1 << " = " << r1.normalize() << " = " << r1.normalize() << " = " << r1.denormalize() << endl;
  38.         cout << r2 << " = " << r2.normalize() << " = " << r2.normalize() << " = " << r2.denormalize() << endl;
  39.         cout << r3 << " = " << r3.normalize() << " = " << r3.normalize() << " = " << r3.denormalize() << endl;
  40.         cout << r4 << " = " << r4.normalize() << " = " << r4.normalize() << " = " << r4.denormalize() << endl;
  41.         break;
  42.     }
  43.     case 1:
  44.     {
  45.         // тут тестируются:
  46.         // конструкторы, геттеры, сеттеры,
  47.         // вывод, конструктор копий, присваивания
  48.  
  49.         Rational lol(1, 2), kek = {2, 3};
  50.         cout << "Rational 1 / 2: " << lol << endl;
  51.         cout << "Rational 2 / 3: " << kek << endl;
  52.  
  53.         Rational temp(618);
  54.         cout << "Int 618 to Rational: " << temp << endl;
  55.  
  56.         Rational test(42, 618);
  57.         cout << "42 / 618 = " << test << " -> ";
  58.  
  59.         test.set(618, 42);
  60.         cout << test << " -> ";
  61.         cout << test.numerator() << " / "
  62.              << test.denominator() << " -> ";
  63.  
  64.         test.numerator() = 6;
  65.         test.denominator() = 18;
  66.         cout << test << endl;
  67.  
  68.         Rational test_copy(test);
  69.         cout << test << " = " << test.simplify()
  70.              << " => copy: " << test_copy << endl;
  71.  
  72.         lol = kek = temp = test;
  73.         cout << lol << ", "
  74.              << kek << ", "
  75.              << temp << endl;
  76.         break;
  77.     }
  78.  
  79.     case 2:
  80.     {
  81.         // тут тестируются:
  82.         // ++ -- -n + += - -= * *= / /=
  83.  
  84.         Rational lol(42, 618);
  85.         Rational kek(69, 420);
  86.         long long abc = 777;
  87.  
  88.         cout << "++" << lol << " = " << ++lol << "\n";
  89.         cout << "--" << lol << " = " << --lol << "\n";
  90.         cout << "-" << lol << " = " << -lol << "\n";
  91.  
  92.         cout << lol << " + " << kek << " = " << lol + kek << endl;
  93.         cout << lol << " + " << abc << " = " << lol + abc << endl;
  94.         cout << abc << " + " << lol << " = " << abc + lol << endl;
  95.  
  96.         cout << lol << " - " << kek << " = " << lol - kek << endl;
  97.         cout << lol << " - " << abc << " = " << lol - abc << endl;
  98.         cout << abc << " - " << lol << " = " << abc - lol << endl;
  99.  
  100.         cout << lol << " * " << kek << " = " << (lol * kek).normalize() << endl;
  101.         cout << lol << " * " << abc << " = " << (lol * abc).normalize() << endl;
  102.         cout << abc << " * " << lol << " = " << (abc * lol).normalize() << endl;
  103.  
  104.         cout << lol << " / " << kek << " = " << lol / kek << endl;
  105.         cout << lol << " / " << abc << " = " << lol / abc << endl;
  106.         cout << abc << " / " << lol << " = " << abc / lol << endl;
  107.  
  108.         lol = {42, 618};
  109.         kek = {69, 420};
  110.         abc = 777;
  111.         cout << lol << " += " << kek << " -> " << (lol += kek) << endl;
  112.         cout << lol << " += " << abc << " -> " << (lol += abc) << endl;
  113.  
  114.         lol = {42, 618};
  115.         kek = {69, 420};
  116.         abc = 777;
  117.         cout << lol << " -= " << kek << " -> " << (lol -= kek) << endl;
  118.         cout << lol << " -= " << abc << " -> " << (lol -= abc) << endl;
  119.  
  120.         lol = {42, 618};
  121.         kek = {69, 420};
  122.         abc = 777;
  123.         cout << lol << " *= " << kek << " -> " << (lol *= kek) << endl;
  124.         cout << lol << " *= " << abc << " -> " << (lol *= abc) << endl;
  125.  
  126.         lol = {42, 618};
  127.         kek = {69, 420};
  128.         abc = 777;
  129.         cout << lol << " /= " << kek << " -> " << (lol /= kek) << endl;
  130.         cout << lol << " /= " << abc << " -> " << (lol /= abc) << endl;
  131.  
  132.         break;
  133.     }
  134.  
  135.     case 3:
  136.     {
  137.         // тут тестируются:
  138.         // == != > >= < <=
  139.  
  140.         Rational testA(1, 2);
  141.         Rational testB(1, 2);
  142.  
  143.         if (testA == testB)
  144.             cout << "testA == testB" << endl;
  145.         if (testA == testA)
  146.             cout << "testA == testA" << endl;
  147.  
  148.         Rational testNew(testA);
  149.         if (testA == testNew)
  150.             cout << "testA == testNew" << endl;
  151.  
  152.         cout << ++testNew << ", " << testNew << endl;
  153.         if (testA == testNew)
  154.             cout << "testA == testNew" << endl;
  155.  
  156.         cout << testA++ << ", " << testA << endl;
  157.         if (testA == testNew)
  158.             cout << "testA == testNew" << endl;
  159.  
  160.         Rational temp(10, -20);
  161.         cout << temp << ", " << temp.simplify() << ", " << temp << endl;
  162.  
  163.         Rational lol = {42, 618}, kek = {69, 420};
  164.         cout << lol << " > " << kek << (lol > kek ? " = True" : " = False") << endl;
  165.         cout << lol << " >= " << kek << (lol >= kek ? " = True" : " = False") << endl;
  166.         cout << lol << " < " << kek << (lol < kek ? " = True" : " = False") << endl;
  167.         cout << lol << " <= " << kek << (lol <= kek ? " = True" : " = False") << endl;
  168.         break;
  169.     }
  170.  
  171.     case 4:
  172.     {
  173.         cout << "\n//-- Summ Test --//\n\n";
  174.         Rational rr;
  175.         for (int i = 1; i < 30; i++)
  176.         {
  177.             Rational temp(1, i);
  178.             rr = rr + temp;
  179.             cout << rr << " = " << rr.get_value() << endl;
  180.         }
  181.         break;
  182.     }
  183.     case 5: // shell sort
  184.     {
  185.         int count = 9;
  186.         Rational* arr[count] = {
  187.             new Rational(1, 2),
  188.             new Rational(12, 21),
  189.             new Rational(13, 22),
  190.             new Rational(14, 23),
  191.             new Rational(15, 24),
  192.             new Rational(0, 1),
  193.             new Rational(666, 6),
  194.             new Rational(16, 25),
  195.             new Rational(17, 26)
  196.         };
  197.         cout << "original:\n";
  198.         for (int i = 0; i < count; i++) {
  199.             cout << *(arr[i]) << endl;
  200.         }
  201.         cout << "sorted:\n";
  202.         ShellSort(count, arr);
  203.         for (int i = 0; i < count; i++) {
  204.             cout << *(arr[i]) << endl;
  205.         }
  206.     }
  207.     }
  208. }
Advertisement
RAW Paste Data Copied
Advertisement