1- // Ñîçäàéòå êëàññ Rational (ðàöèîíàëüíàÿ äðîáü )
1+ // Создайте класс Rational (рациональная дробь )
22
3- // ËÀÁÀ 14 ÂÀÐÈÀÍÒ 4
3+ // ЛАБА 14 ВАРИАНТ 4
44
55// TODO:
6- // ïðèâàòíûå ïîëÿ äëÿ äàííûõ
7- // êîíñòðóêòîð, ñîäåðæàùèé çíà÷åíèÿ ïî óìîë÷àíèþ
8- // ôóíêöèè-ýëåìåíòû óñòàíîâêè è èçâëå÷åíèÿ çíà÷åíèé
9- // ïåðåãðóæåííûå îïåðàòîðû ââîäà è âûâîäà
10- // êîíñòðóêòîð êîïèé
11- // îïåðàòîð ïðèñâàèâàíèÿ
12-
13- // óêàçàííûå â çàäàíèè ïåðåãðóæåííûå îïåðàöèè
6+ // приватные поля для данных
7+ // конструктор, содержащий значения по умолчанию
8+ // функции-элементы установки и извлечения значений
9+ // перегруженные операторы ввода и вывода
10+ // конструктор копий
11+ // оператор присваивания
12+
13+ // указанные в задании перегруженные операции
1414// ++ -- -n == != = + += - -= * *= / /= > < >= <=
1515
16-
1716/*
18- ÍÅ ÄÎÏ :
19- ïîïðàâèòü âûâîä
20- !!!ó÷åñòü îòðèöàòåëüíûå ÷èñëà
21- ÄÎÏ :
22- äîáàâèòü öåëóþ ÷àñòü (â ñàì êëàññ )
23- îïåðàöèè, ñîîòâ ., ñ ó÷åòîì öåëîé ÷àñòè äðîáåé
24- ñîðòèðîâêà Øåëëà ìàññèâà äðîáåé
17+ НЕ ДОП :
18+ поправить вывод
19+ !!!учесть отрицательные числа
20+ ДОП :
21+ добавить целую часть (в сам класс )
22+ операции, соотв ., с учетом целой части дробей
23+ сортировка Шелла массива дробей
2524*/
2625#include " rational.h"
2726using namespace std ;
2827
29- // òåñòèðîâàíèå ôóíêöèé êëàññà
30- int main () {
31- int test_n = 0 ;
32- cout << " Run test #" ;
33- cin >> test_n;
34-
35- switch (test_n) {
36- case 1 : {
37- // òóò òåñòèðóþòñÿ:
38- // êîíñòðóêòîðû, ãåòòåðû, ñåòòåðû,
39- // âûâîä, êîíñòðóêòîð êîïèé, ïðèñâàèâàíèÿ
40-
41- Rational lol (1 , 2 ), kek = { 2 , 3 };
42- cout << " Rational 1 / 2: " << lol << endl;
43- cout << " Rational 2 / 3: " << kek << endl;
44-
45- Rational temp (618 );
46- cout << " Int 618 to Rational: " << temp << endl;
47-
48- Rational test (42 , 618 );
49- cout << " 42 / 618 = " << test << " -> " ;
50-
51- test.set (618 , 42 );
52- cout << test << " -> " ;
53- cout << test.numerator () << " / "
54- << test.denominator () << " -> " ;
55-
56- test.numerator () = 6 ;
57- test.denominator () = 18 ;
58- cout << test << endl;
59-
60- Rational test_copy (test);
61- cout << test << " = " << test.simplify ()
62- << " => copy: " << test_copy << endl;
63-
64- lol = kek = temp = test;
65- cout << lol << " , "
66- << kek << " , "
67- << temp << endl;
68- break ;
69- }
70-
71- case 2 : {
72- // òóò òåñòèðóþòñÿ:
73- // ++ -- -n + += - -= * *= / /=
74-
75- Rational lol (42 , 618 );
76- Rational kek (69 , 420 );
77- long long abc = 777 ;
78-
79- cout << " (" << lol << " )++ = (" << ++lol << " )\n " ;
80- cout << " (" << lol << " )-- = (" << --lol << " )\n " ;
81- cout << " -(" << lol << " ) = (" << -lol << " )\n " ;
82-
83- cout << " (" << lol << " ) + (" << kek << " ) = " << lol + kek << endl;
84- cout << " (" << lol << " ) + (" << abc << " ) = " << lol + abc << endl;
85- cout << " (" << abc << " ) + (" << lol << " ) = " << abc + lol << endl;
86-
87- cout << " (" << lol << " ) - (" << kek << " ) = " << lol - kek << endl;
88- cout << " (" << lol << " ) - (" << abc << " ) = " << lol - abc << endl;
89- cout << " (" << abc << " ) - (" << lol << " ) = " << abc - lol << endl;
90-
91- cout << " (" << lol << " ) * (" << kek << " ) = " << lol * kek << endl;
92- cout << " (" << lol << " ) * (" << abc << " ) = " << lol * abc << endl;
93- cout << " (" << abc << " ) * (" << lol << " ) = " << abc * lol << endl;
94-
95- cout << " (" << lol << " ) / (" << kek << " ) = " << lol / kek << endl;
96- cout << " (" << lol << " ) / (" << abc << " ) = " << lol / abc << endl;
97- cout << " (" << abc << " ) / (" << lol << " ) = " << abc / lol << endl;
98-
99- lol = { 42 , 618 }; kek = { 69 , 420 }; abc = 777 ;
100- cout << " (" << lol << " ) += (" << kek << " ) -> " << (lol += kek) << endl;
101- cout << " (" << lol << " ) += (" << abc << " ) -> " << (lol += abc) << endl;
102-
103- lol = { 42 , 618 }; kek = { 69 , 420 }; abc = 777 ;
104- cout << " (" << lol << " ) -= (" << kek << " ) -> " << (lol -= kek) << endl;
105- cout << " (" << lol << " ) -= (" << abc << " ) -> " << (lol -= abc) << endl;
106-
107- lol = { 42 , 618 }; kek = { 69 , 420 }; abc = 777 ;
108- cout << " (" << lol << " ) *= (" << kek << " ) -> " << (lol *= kek) << endl;
109- cout << " (" << lol << " ) *= (" << abc << " ) -> " << (lol *= abc) << endl;
110-
111- lol = { 42 , 618 }; kek = { 69 , 420 }; abc = 777 ;
112- cout << " (" << lol << " ) /= (" << kek << " ) -> " << (lol /= kek) << endl;
113- cout << " (" << lol << " ) /= (" << abc << " ) -> " << (lol /= abc) << endl;
114-
115- break ;
116- }
117-
118- case 3 : {
119- // òóò òåñòèðóþòñÿ:
120- // == != > >= < <=
121-
122- Rational testA (1 , 2 );
123- Rational testB (1 , 2 );
124-
125- if (testA == testB) cout << " testA == testB" << endl;
126- if (testA == testA) cout << " testA == testA" << endl;
127-
128- Rational testNew (testA);
129- if (testA == testNew) cout << " testA == testNew" << endl;
130-
131- cout << ++testNew << " , " << testNew << endl;
132- if (testA == testNew) cout << " testA == testNew" << endl;
133-
134- cout << testA++ << " , " << testA << endl;
135- if (testA == testNew) cout << " testA == testNew" << endl;
136-
137- Rational temp (10 , -20 );
138- cout << temp << " , " << temp.simplify () << " , " << temp << endl;
139-
140- Rational lol = { 42 , 618 }, kek = { 69 , 420 };
141- cout << lol << " > " << kek << (lol > kek ? " = True" : " = False" ) << endl;
142- cout << lol << " >= " << kek << (lol >= kek ? " = True" : " = False" ) << endl;
143- cout << lol << " < " << kek << (lol < kek ? " = True" : " = False" ) << endl;
144- cout << lol << " <= " << kek << (lol <= kek ? " = True" : " = False" ) << endl;
145- break ;
146- }
147-
148- case 4 : {
149- cout << " \n //-- Summ Test --//\n\n " ;
150- Rational rr;
151- for (int i = 1 ; i < 30 ; i++) {
152- Rational temp (1 , i);
153- rr = rr + temp;
154- cout << rr << " = " << rr.get_value () << endl;
155- }
156- break ;
157- }
28+ // тестирование функций класса
29+ int main ()
30+ {
31+ int test_n = 0 ;
32+ cout << " Run test #" ;
33+ cin >> test_n;
34+
35+ switch (test_n)
36+ {
37+ case 1 :
38+ {
39+ // тут тестируются:
40+ // конструкторы, геттеры, сеттеры,
41+ // вывод, конструктор копий, присваивания
42+
43+ Rational lol (1 , 2 ), kek = {2 , 3 };
44+ cout << " Rational 1 / 2: " << lol << endl;
45+ cout << " Rational 2 / 3: " << kek << endl;
46+
47+ Rational temp (618 );
48+ cout << " Int 618 to Rational: " << temp << endl;
49+
50+ Rational test (42 , 618 );
51+ cout << " 42 / 618 = " << test << " -> " ;
52+
53+ test.set (618 , 42 );
54+ cout << test << " -> " ;
55+ cout << test.numerator () << " / "
56+ << test.denominator () << " -> " ;
57+
58+ test.numerator () = 6 ;
59+ test.denominator () = 18 ;
60+ cout << test << endl;
61+
62+ Rational test_copy (test);
63+ cout << test << " = " << test.simplify ()
64+ << " => copy: " << test_copy << endl;
65+
66+ lol = kek = temp = test;
67+ cout << lol << " , "
68+ << kek << " , "
69+ << temp << endl;
70+ break ;
71+ }
72+
73+ case 2 :
74+ {
75+ // тут тестируются:
76+ // ++ -- -n + += - -= * *= / /=
77+
78+ Rational lol (42 , 618 );
79+ Rational kek (69 , 420 );
80+ long long abc = 777 ;
81+
82+ cout << " (" << lol << " )++ = (" << ++lol << " )\n " ;
83+ cout << " (" << lol << " )-- = (" << --lol << " )\n " ;
84+ cout << " -(" << lol << " ) = (" << -lol << " )\n " ;
85+
86+ cout << " (" << lol << " ) + (" << kek << " ) = " << lol + kek << endl;
87+ cout << " (" << lol << " ) + (" << abc << " ) = " << lol + abc << endl;
88+ cout << " (" << abc << " ) + (" << lol << " ) = " << abc + lol << endl;
89+
90+ cout << " (" << lol << " ) - (" << kek << " ) = " << lol - kek << endl;
91+ cout << " (" << lol << " ) - (" << abc << " ) = " << lol - abc << endl;
92+ cout << " (" << abc << " ) - (" << lol << " ) = " << abc - lol << endl;
93+
94+ cout << " (" << lol << " ) * (" << kek << " ) = " << lol * kek << endl;
95+ cout << " (" << lol << " ) * (" << abc << " ) = " << lol * abc << endl;
96+ cout << " (" << abc << " ) * (" << lol << " ) = " << abc * lol << endl;
97+
98+ cout << " (" << lol << " ) / (" << kek << " ) = " << lol / kek << endl;
99+ cout << " (" << lol << " ) / (" << abc << " ) = " << lol / abc << endl;
100+ cout << " (" << abc << " ) / (" << lol << " ) = " << abc / lol << endl;
101+
102+ lol = {42 , 618 };
103+ kek = {69 , 420 };
104+ abc = 777 ;
105+ cout << " (" << lol << " ) += (" << kek << " ) -> " << (lol += kek) << endl;
106+ cout << " (" << lol << " ) += (" << abc << " ) -> " << (lol += abc) << 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+ break ;
127+ }
128+
129+ case 3 :
130+ {
131+ // тут тестируются:
132+ // == != > >= < <=
133+
134+ Rational testA (1 , 2 );
135+ Rational testB (1 , 2 );
136+
137+ if (testA == testB)
138+ cout << " testA == testB" << endl;
139+ if (testA == testA)
140+ cout << " testA == testA" << endl;
141+
142+ Rational testNew (testA);
143+ if (testA == testNew)
144+ cout << " testA == testNew" << endl;
145+
146+ cout << ++testNew << " , " << testNew << endl;
147+ if (testA == testNew)
148+ cout << " testA == testNew" << endl;
149+
150+ cout << testA++ << " , " << testA << endl;
151+ if (testA == testNew)
152+ cout << " testA == testNew" << endl;
153+
154+ Rational temp (10 , -20 );
155+ cout << temp << " , " << temp.simplify () << " , " << temp << endl;
156+
157+ Rational lol = {42 , 618 }, kek = {69 , 420 };
158+ cout << lol << " > " << kek << (lol > kek ? " = True" : " = False" ) << endl;
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+ break ;
163+ }
164+
165+ case 4 :
166+ {
167+ cout << " \n //-- Summ Test --//\n\n " ;
168+ Rational rr;
169+ for (int i = 1 ; i < 30 ; i++)
170+ {
171+ Rational temp (1 , i);
172+ rr = rr + temp;
173+ cout << rr << " = " << rr.get_value () << endl;
158174 }
175+ break ;
176+ }
177+ }
159178}
0 commit comments