77// перегруженные операторы ввода и вывода
88// конструктор копий
99// оператор присваивания
10-
1110// указанные в задании перегруженные операции
1211// ++ -- -n == != = + += - -= * *= / /= > < >= <=
1312
14- // НЕ ДОП:
15- // * - поправить вывод
16- // * - !!!учесть отрицательные числа
17- // ДОП:
13+ // Исправить:
14+ // * - поправить вывод
15+ // * - !!!учесть отрицательные числа
16+
17+ // Доп:
1818// * - добавить целую часть (в сам класс)
1919// * - операции, соотв., с учетом целой части дробей
20- // * - сортировка Шелла массива дробей
20+ // * - сортировка Шелла массива дробей
2121
2222#include " rational.h"
2323using namespace std ;
2424
2525// тестирование функций класса
26- int main ()
27- {
26+ int main () {
2827 int test_n = 0 ;
2928 cout << " Run test #" ;
3029 cin >> test_n;
3130
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- }
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+ }
7875
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- }
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+ }
134130
135- case 3 :
136- {
137- // тут тестируются:
138- // == != > >= < <=
131+ case 3 : {
132+ // тут тестируются:
133+ // == != > >= < <=
139134
140- Rational testA (1 , 2 );
141- Rational testB (1 , 2 );
135+ Rational testA (1 , 2 );
136+ Rational testB (1 , 2 );
142137
143- if (testA == testB)
144- cout << " testA == testB" << endl;
145- if (testA == testA)
146- cout << " testA == testA" << endl;
138+ if (testA == testB)
139+ cout << " testA == testB" << endl;
140+ if (testA == testA)
141+ cout << " testA == testA" << endl;
147142
148- Rational testNew (testA);
149- if (testA == testNew)
150- cout << " testA == testNew" << endl;
143+ Rational testNew (testA);
144+ if (testA == testNew)
145+ cout << " testA == testNew" << endl;
151146
152- cout << ++testNew << " , " << testNew << endl;
153- if (testA == testNew)
154- cout << " testA == testNew" << endl;
147+ cout << ++testNew << " , " << testNew << endl;
148+ if (testA == testNew)
149+ cout << " testA == testNew" << endl;
155150
156- cout << testA++ << " , " << testA << endl;
157- if (testA == testNew)
158- cout << " testA == testNew" << endl;
151+ cout << testA++ << " , " << testA << endl;
152+ if (testA == testNew)
153+ cout << " testA == testNew" << endl;
159154
160- Rational temp (10 , -20 );
161- cout << temp << " , " << temp.simplify () << " , " << temp << endl;
155+ Rational temp (10 , -20 );
156+ cout << temp << " , " << temp.simplify () << " , " << temp << endl;
162157
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- }
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+ }
170165
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 ;
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 ;
180175 }
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 ),
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 ),
193186 new Rational (666 , 6 ),
194- new Rational (16 , 25 ),
195- new Rational (17 , 26 )};
196- cout << " original:\n " ;
197- for (int i = 0 ; i < count; i++)
198- {
199- cout << *(arr[i]) << endl;
200- }
201- cout << " sorted:\n " ;
202- ShellSort (count, arr);
203- for (int i = 0 ; i < count; i++)
204- {
205- cout << *(arr[i]) << endl;
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+ }
206201 }
207202 }
208- }
209203}
0 commit comments