Skip to content

Commit 7ac5bfb

Browse files
committed
Merge branch 'lab-13-var-6-ver-2'
2 parents f009368 + 6d7ffe3 commit 7ac5bfb

File tree

3 files changed

+595
-0
lines changed

3 files changed

+595
-0
lines changed

Variants/Lab_13/var_6/main.cpp

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

0 commit comments

Comments
 (0)