5. «Правильная числовая дробь»
В задании на 16 есть модуль для сокращения дроби
- «Комплексное число»
- «Время».
- «Дата»
- «Денежная сумма»
- «Сочетание»
- «Размещение»
- «Двучлен»
- «Трехчлен»
- «Точка в двумерном пространстве»
- «Вектор в двумерном пространстве»
- «Вектор в трехмерном пространстве»
- «Отрезок в двумерном пространстве»
- «Окружность в двумерном пространстве».
- «Сектор круга»
- «Кольцо в двумерном пространстве»
- «Прямоугольник в двумерном пространстве»
- «Треугольник в двумерном пространстве»
- «Треугольник в двумерном пространстве»
- «Матрица 2×2 вещественных чисел»
- «Матрица 3×3 вещественных чисел»
- «Счетчик»
- «Диапазон на числовой прямой»
- «Геометрическая прогрессия»
- «Арифметическая прогрессия»
6. «Комплексное число»
#define _USE_MATH_DEFINES #include <cmath> #include <iostream> using namespace std; class ComplexNum { private: double re; double im; public: // Конструктор по умолчанию ComplexNum() { re = 0; im = 0; } // Параметрический конструктор ComplexNum(double re = 0, double im = 0) { this->re = re; this->im = im; } // Конструктор копирования ComplexNum(const ComplexNum& other) { this->re = other.re; this->im = other.im; } // Конструктор перемещения ComplexNum(ComplexNum&& other) noexcept { this->re = other.re; this->im = other.im; } // Функция вывода на экран void Print() { if (re == 0) { if (im == 0) cout << 0; else cout << im << "*i"; } else { cout << re; if (im > 0) cout << "+" << im << "*i"; if (im < 0) cout << im << "*i"; } cout << endl; } // Функция ввода с экрана void Scan() { double re, im; cout << "Введите действительную часть: "; cin >> re; cout << "Введите мнимую часть: "; cin >> im; this->re = re; this->im = im; } // Сложение ComplexNum Add(ComplexNum other) { double re = this->re + other.re; double im = this->im + other.im; return ComplexNum(re, im); } // Вычитание ComplexNum Diff(ComplexNum other) { double re = this->re - other.re; double im = this->im - other.im; return ComplexNum(re, im); } // Умножение ComplexNum Mul(ComplexNum other) { double re = this->re * other.re - this->im * other.im; double im = this->re * other.im + this->im * other.re; return ComplexNum(re, im); } // Сложение с числом ComplexNum Add(double other) { double re = this->re + other; double im = this->im; return ComplexNum(re, im); } // Вычитание числа ComplexNum Diff(int other) { double re = this->re - other; double im = this->im; return ComplexNum(re, im); } // Умножение на число ComplexNum Mul(double other) { double re = this->re * other; double im = this->im * other; return ComplexNum(re, im); } // Сравнение на равенство bool isEqual(ComplexNum other) { return this->re == other.re && this->im == other.im; } // Сравнение на неравенство bool isNotEqual(ComplexNum other) { return this->re != other.re || this->im != other.im; } // Модуль double mod() { return sqrt(pow(re, 2) + pow(im, 2)); } // Аргумент double arg() { if (re == 0 && im > 0) return M_PI / 2; if (re == 0 && im < 0) return -M_PI / 2; if (re > 0) return atan(im / re); if (re < 0 && im >= 0) return M_PI + atan(im / re); if (re < 0 && im < 0) return -M_PI + atan(im / re); } };
7. «Время»
#include <iostream> using namespace std; class Time { private: int hour, minute, second; public: // Конструктор по умолчанию Time() { hour = 0; minute = 0; second = 0; } // Конструктор с параметрами Time(int hour, int minute, int second) { if (hour > 24 or minute > 60 or second > 60) abort(); else { this->hour = hour; this->minute = minute; this->second = second; } } // Конструктор копирования Time(const Time& time) { hour = time.hour; minute = time.minute; second = time.second; } // Конструктор который берет в качестве параметра массив Time(int arr[]) { hour = arr[0]; minute = arr[1]; second = arr[3]; } // Функция нахождение разности двух моментов времени в секундах Time Sub(Time& b) { Time SubA; int sub; if (InSecond() < b.InSecond()) sub = b.InSecond() - InSecond(); else abort(); hour = sub / 3600; minute = (sub - hour * 3600) / 60; second = sub - hour * 3600 - minute * 60; SubA.hour = hour; SubA.minute = minute; SubA.second = second; return SubA; } // Функция добавления одной секунды Time AddOneSec() { Time a; second++; if (second == 60) { second = 0; minute++; } if (minute == 60) { minute = 0;; hour++; } if (hour == 24) hour = 0; a.hour = hour; a.minute = minute; a.second = second; return a; } // Функции сетов void setHour(int hour) { if (hour < 24) this->hour = hour; else abort(); } void setMinute(int minute) { if (minute < 60) this->minute = minute; else abort(); } void setSecond(int second) { if (second < 60) this->second = second; else abort(); } // Функции гетов int getHour() { return hour; } int getMinute() { return minute; } int getSecond() { return second; } // Функция пероводящая время в секунды int InSecond() { return hour * 3600 + minute * 60 + second; } // Функция ввода void Input() { int h, m, s; cout << "Введите время:" << endl; cout << endl; cout << "Час: "; cin >> h; setHour(h); cout << "Минута: "; cin >> m; setMinute(m); cout << "Секунда: "; cin >> s; setSecond(s); } // Функция вывода на экран void Print() { cout << "\n" << hour << " : " << minute << " : " << second << endl; } // Функция сравнение двух времен bool Equal(Time& n) { if (n.getHour() == hour and n.getMinute() == minute and n.getSecond() == second) return true; else return false; } };
8. «Дата»
class Date { private: int day; int month; int year; public: // Конструктор по умолчанию Date() { day = 1; month = 1; year = 0; } // Параметрический конструктор Date(int day, int month, int year) { this->day = day; this->month = month; this->year = year; } // Конструктор копирования Date(const Date& other) { this->day = other.day; this->month = other.month; this->year = other.year; } // Конструктор перемещения Date(Date&& other) noexcept { this->day = other.day; this->month = other.month; this->year = other.year; } // Функция вывода на экран void Print() { if (day < 10) cout << "0" << day << "."; else cout << day << "."; if (month < 10) cout << "0" << month << "."; else cout << month << "."; cout << year; if (year < 0) cout << " B.C."; cout << endl; } // Функция ввода с экрана void Scan() { int day, month, year; dayrepeat: cout << "Введите день: "; cin >> day; if (day <= 0) { cout << "День не может быть не положительным\n"; goto dayrepeat; } monthrepeat: cout << "Введите месяц: "; cin >> month; if (month <= 0) { cout << "Месяц не может быть не положительным\n"; goto monthrepeat; } cout << "Введите год: "; cin >> year; this->day = day; this->month = month; this->year = year; } // Сравнение на равенство bool isEqual(Date other) { return this->day == other.day && this->month == other.month && this->year == other.year; } // Сравнение на неравенство bool isNotEqual(Date other) { return this->day != other.day || this->month != other.month || this->year != other.year; } // Проверка на високосность bool isLeap() { return year % 400 == 0 || (year % 100 != 0 && year % 4 == 0); } // Добавление дня void addDay() { if ((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10) && day == 31) { day == 1; month += 1; } else { if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 30) { day == 1; month++; } else { if (month == 2 && ((this->isLeap() && day == 29) || (!this->isLeap() && day == 28))) { day == 1; month++; } else { if (day == 31 && month == 12) { day == 1; month == 1; year++; } else { day++; } } } } } };
9. «Денежная сумма»
#include <iostream> using namespace std; class AmountOfMoney { private: int sizeAmount; int currencyCode; float exchangeRateDollar; public: // Конструктор по умолчанию AmountOfMoney() { sizeAmount = 0; currencyCode = 0; exchangeRateDollar = 0; } // Конструктор с параметрами AmountOfMoney(int sizeAmount, int currencyCode, float exchangeRateDollar) { setSizeAmount(sizeAmount); setCurrencyCode(currencyCode); setExchangeRateDollar(exchangeRateDollar); } // Конструктор копирования AmountOfMoney(const AmountOfMoney& other) { this->sizeAmount = other.sizeAmount; this->currencyCode = other.currencyCode; this->exchangeRateDollar = other.exchangeRateDollar; } // Конструктор перемещения AmountOfMoney(const AmountOfMoney&& other) noexcept { this->sizeAmount = other.sizeAmount; this->currencyCode = other.currencyCode; this->exchangeRateDollar = other.exchangeRateDollar; } // Функции сетов void setSizeAmount(int sizeAmount) { if (sizeAmount > 0) this->sizeAmount = sizeAmount; } void setCurrencyCode(int currencyCode) { if (currencyCode > 0) this->currencyCode = currencyCode; } void setExchangeRateDollar(float exchangeRateDollar) { if (exchangeRateDollar > 0) this->exchangeRateDollar = exchangeRateDollar; } // Функции гетов int getSizeAmount() { return sizeAmount; } int getCurrencyCode() { return currencyCode; } float getExchangeRateDollar() { return exchangeRateDollar; } // Функция конвертации в долары float SizeAmountInDollar() { return sizeAmount * exchangeRateDollar; } // Функци ввывода void Print() { cout << "Размер суммы: " << sizeAmount << "\tКод: " << currencyCode << "\tКурс по отношению к доллару: " << exchangeRateDollar << endl; } // Функция ввода void Input() { int size, code; float exDollar; cout << "Введите размер суммы: "; cin >> size; setSizeAmount(size); cout << "Введите код валюты: "; cin >> code; setCurrencyCode(code); cout << "Введите курс валюты по отношению к долору: "; cin >> exDollar; setExchangeRateDollar(exDollar); } // Функция сравнения bool Equal(AmountOfMoney& other) { if (getSizeAmount() != other.sizeAmount) return false; else if (getCurrencyCode() != other.currencyCode) return false; else if (getExchangeRateDollar() != other.exchangeRateDollar) return false; else return true; } // Функция суммы AmountOfMoney Sum(AmountOfMoney& b) { AmountOfMoney SumInDollar; SumInDollar.setSizeAmount(SizeAmountInDollar() + b.SizeAmountInDollar()); SumInDollar.setCurrencyCode(840); SumInDollar.setExchangeRateDollar(1); return SumInDollar; } // Функция отнимания AmountOfMoney Sub(AmountOfMoney& b) { AmountOfMoney SubInDollar; float sub; if (SizeAmountInDollar() < b.SizeAmountInDollar()) sub = b.SizeAmountInDollar() - SizeAmountInDollar(); else abort(); SubInDollar.setSizeAmount(sub); SubInDollar.setCurrencyCode(840); SubInDollar.setExchangeRateDollar(1); return SubInDollar; } };
10. «Сочетание»
#define _USE_MATH_DEFINES #include <cmath> #include <iostream> using namespace std; class Combination { private: int n; int m; long long factorial(int n) { if (n == 1) return 1; else return n * factorial(n - 1); } public: // Конструктор по умолчанию Combination() { n = 1; m = 1; } // Параметрический конструктор Combination(int n, int m) { this->n = n; this->m = m; } // Конструктор копирования Combination(const Combination& other) { this->n = other.n; this->m = other.m; } // Конструктор перемещения Combination(Combination&& other) noexcept { this->n = other.n; this->m = other.m; } // Функция вывода на экран void Print() { cout << "C из " << n << " по " << m << endl; } // Функция ввода с экрана void Scan() { int n, m; nrepeat: cout << "Введите количество предметов: "; cin >> n; if (n < 0) { cout << "Количество предметов не может быть меньше 0\n"; goto nrepeat; } mrepeat: cout << "Введите количество выбранных предметов: "; cin >> m; if (m < 0) { cout << "Количество выбранных предметов не может быть меньше 0\n"; goto mrepeat; } this->n = n; this->m = m; } // Сравнение на равенство bool isEqual(Combination other) { return this->n == other.n && this->m == other.m; } // Сравнение на неравенство bool isNotEqual(Combination other) { return this->n != other.n || this->m != other.m; } //Вычисление числа сочетаний long long combinations() { return factorial(n) / (factorial(n - m) * factorial(m)); } };
11. «Размещение»
#include <iostream> #include <cmath> using namespace std; class Placement { private: int n; int m; public: Placement() { n = 0; m = 0; } Placement(int n, int m) { setN(n); setM(m); } Placement(Placement& other) { n = other.n; m = other.m; } Placement(Placement&& other) { n = other.n; m = other.m; } void setN(int n) { this->n = n; } void setM(int m) { this->m = m; } int getN() { return n; } int getM() { return m; } void Input() { int n, m; cout << "Введите количество элементов m: "; cin >> m; cout << "Введите количество перестановок n: "; cin >> n; if (m <= n) { setN(n); setM(m); } else abort(); } void Print() { cout << "Размещение из n: "<< n << "объектов по m: " << m << endl; } bool isEqual(Placement& other) { if (n == other.n && m == other.m) return true; else return false; } int factorial(int number) { if (number <= 1) return 1; else return number * factorial(number - 1); } int PlacementA() { return factorial(n) / factorial(n - m); } int sub (Placement other) { if (PlacementA() > other.PlacementA()) return PlacementA() - other.PlacementA(); else abort(); } };
12. «Двучлен»
#include <iostream> using namespace std; class Binomial { private: int x0; int x1; public: Binomial() { x0 = 0; x1 = 0; } Binomial(int x1, int x0) { this->x1 = x1; this->x0 = x0; } Binomial(const Binomial& other) { this->x1 = other.x1; this->x0 = other.x0; } Binomial(const Binomial&& other) { this->x1 = other.x1; this->x0 = other.x0; } Binomial Sum(const Binomial& other) { Binomial add; add.x0 = this->x0 + other.x0; add.x1 = this->x1 + other.x1; return add; } Binomial Sub(const Binomial& other) { Binomial sub; sub.x0 = this->x0 - other.x0; sub.x1 = this->x1 - other.x1; return sub; } Binomial SumWithFloat(float number) { Binomial add; add.x0 += number; add.x1 = x1; return add; } Binomial MultipleWithFloat(float number) { Binomial multi; multi.x0 = x0 * number; multi.x1 = x1 * number; return multi; } int Calculating(int x) { return x1 * x + x0; } float BinomialSolutions() { return (float)-x0 / (float)x1; } bool Eqvil(const Binomial& other) { return this->x0 == other.x0 and this->x1 == other.x1; } void Input() { cout << "Введите коэффициент х при первом степени: "; cin >> x1; cout << "Введите коэффициент х при нолевой степени: "; cin >> x0; } void Print() { if (x0 > 0 and x1 != 0 and x1 != 1) cout << x1 << "x" << " + " << x0 << endl; else if (x0 < 0 and x0 != 0) cout << x1 << "x" << " - " << -x0 << endl; else if (x1 == 0) cout << x0 << endl; else if (x0 == 0) cout << x1 << "x" << endl; else if (x1 == 1) cout << "x" << " + " << x0 << endl; else abort(); } };
13. «Трехчлен»
#include <iostream> using namespace std; class Trinomial { private: int term1, term2, term3; public: Trinomial() { term1 = 0; term2 = 0; term3 = 0; } Trinomial(int term1, int term2, int term3) { this->term1 = term1; this->term2 = term2; this->term3 = term3; } Trinomial(Trinomial& other) { term1 = other.term1; term2 = other.term2; term3 = other.term3; } Trinomial(Trinomial&& other) { term1 = other.term1; term2 = other.term2; term3 = other.term3; } Trinomial Sum(Trinomial& b) { Trinomial result; result.term1 = term1 + b.term1; result.term2 = term2 + b.term2; result.term3 = term3 + b.term3; return result; } Trinomial Sub(Trinomial& b) { Trinomial result; result.term1 = term1 - b.term1; result.term2 = term2 - b.term2; result.term3 = term3 - b.term3; return result; } bool Equal(Trinomial& other) { if (term1 == other.term1 && term2 == other.term2 && term3 == other.term3) return true; else false; } Trinomial SumWithFloat(float n) { Trinomial result; result.term1 = term1; result.term2 = term2; result.term3 = term3 + n; return result; } Trinomial MultipleWithFloat(float n) { Trinomial result; result.term1 = term1 * n; result.term2 = term2 * n; result.term3 = term3 * n; return result; } int Calculating(int x) { int result; result = x * term1 * term1 + x * term2 + term3; } void Input() { cout << "Введите первый коэффициент"; cin >> term1; cout << "Введите второй коэффициент"; cin >> term2; cout << "Введите третий коэффициент"; cin >> term3; } void Print() { if (term2 > 0 && term3 > 0 && term1 != 1 && term2 != 1) cout << term1 << "x^2 + " << term2 << "x + " << term3 << endl; else if (term2 < 0 && term3 > 0 && term1 != 1) cout << term1 << "x^2 - " << -term2 << "x + " << term3 << endl; else if (term3 < 0 && term2 > 0 && term2 != 1) cout << term1 << "x^2 + " << term2 << "x - " << -term3 << endl; else if (term2 < 0 && term3 < 0 && term1 != 1) cout << term1 << "x^2 - " << -term2 << "x - " << -term3 << endl; else if (term1 == 1 && term2 != 1) cout << "x^2 + " << term2 << "x + " << term3 << endl; else if (term2 == 1 && term1 != 1) cout << term1 << "x^2 + " << "x + " << term3 << endl; else if (term1 == 1 && term2 == 1) cout << "x^2 + " << "x + " << term3 << endl; else abort(); } };
14. «Точка в двумерном пространстве»
#include <iostream> #include <cmath> using namespace std; class Point { private: double x, y; public: Point() { x = 0; y = 0; } Point(double x, double y) { this->x = x; this->y = y; } Point(Point& other) { this->x = other.x; this->y = other.y; } Point(Point&& other) { this->x = other.x; this->y = other.y; } void Input() { cout << "Enter point" << endl; cout << "Enter x: "; cin >> this->x; cout << "Enter y: "; cin >> this->y; } void Print() { cout << "x: " << x << "\ty: " << y << endl; } bool Eqvil(Point& other) { return this->x == other.x && this->y == other.y; } void InWhichSquare() { if (x > 0 && y > 0) cout << "The point is in the I coordinate square" << endl; else if (x < 0 && y > 0) cout << "The point is in the II coordinate square" << endl; else if (x < 0 && y < 0) cout << "The point is in the III coordinate square" << endl; else if (x > 0 && y < 0) cout << "The point is in the IV coordinate square" << endl; else cout << "The point is at the start of the coordinates" << endl; } double Distance(Point& b) { return sqrt(pow(b.x - x, 2) + pow(b.y - y, 2)); } };
15. «Вектор в двумерном пространстве»
#include <iostream> using namespace std; class Vector { private: float v1, v2; public: Vector() { v1 = 0; v2 = 0; } Vector(float v1, float v2) { this->v1 = v1; this->v2 = v2; } Vector(Vector& other) { this->v1 = other.v1; this->v2 = other.v2; } Vector(Vector&& other) { this->v1 = other.v1; this->v2 = other.v2; } void Input() { cout << "Enter a vector" << endl; cout << "Enter the coordinates of x: "; cin >> v1; cout << "Enter the coordinates of y: "; cin >> v2; } void Print() { cout << "x: " << v1 << "\ty: " << v2 << endl; } Vector Sum(Vector& other) { Vector sum; sum.v1 = this->v1 + other.v1; sum.v2 = this->v2 + other.v2; return sum; } Vector Sub(Vector& other) { Vector sub; sub.v1 = this->v1 - other.v1; sub.v2 = this->v2 - other.v2; return sub; } bool Eqvil(Vector& other) { return this->v1 == other.v1 && this->v2 == other.v2; } Vector MultiplyWithNumber(int number) { Vector multiply; multiply.v1 = this->v1 * number; multiply.v2 = this->v2 * number; return multiply; } float Module() { return sqrt(pow(v1, 2) + pow(v2, 2)); } float ScalarProduct(Vector& other) { return this->v1 * other.v1 + this->v2 * other.v2; } };
16. «Вектор в трехмерном пространстве»
#include <iostream> using namespace std; class Vector { private: float v1, v2, v3; public: Vector() { v1 = 0; v2 = 0; v3 = 0; } Vector(float v1, float v2) { this->v1 = v1; this->v2 = v2; this->v3 = v3; } Vector(Vector& other) { this->v1 = other.v1; this->v2 = other.v2; this->v3 = other.v3; } Vector(Vector&& other) { this->v1 = other.v1; this->v2 = other.v2; this->v3 = other.v3; } void Input() { cout << "Enter a vector" << endl; cout << "Enter the coordinates of x: "; cin >> v1; cout << "Enter the coordinates of y: "; cin >> v2; cout << "Enter the coordinates of z: "; cin >> v3; } void Print() { cout << "x: " << v1 << "\ty: " << v2 << "\tz: " << v3 << endl; } Vector Sum(Vector& other) { Vector sum; sum.v1 = this->v1 + other.v1; sum.v2 = this->v2 + other.v2; sum.v3 = this->v3 + other.v3; return sum; } Vector Sub(Vector& other) { Vector sub; sub.v1 = this->v1 - other.v1; sub.v2 = this->v2 - other.v2; sub.v3 = this->v3 - other.v3; return sub; } bool Eqvil(Vector& other) { return this->v1 == other.v1 && this->v2 == other.v2 && this->v3 == other.v3; } Vector MultiplyWithNumber(int number) { Vector multiply; multiply.v1 = this->v1 * number; multiply.v2 = this->v2 * number; multiply.v3 = this->v3 * number; return multiply; } float Module() { return sqrt(pow(v1, 2) + pow(v2, 2) + pow(v3, 2)); } float ScalarProduct(Vector& other) { return this->v1 * other.v1 + this->v2 * other.v2 + this->v3 * other.v3; } };
17. «Отрезок в двумерном пространстве»
#include <iostream> using namespace std; class Segment { private: int Ax; int Ay; int Bx; int By; public: Segment() { Ax = 0; Ay = 0; Bx = 0; By = 0; } Segment(int Ax, int Ay, int Bx, int By) { this->Ax = Ax; this->Ay = Ay; this->Bx = Bx; this->By = By; } Segment(Segment& other) { this->Ax = other.Ax; this->Ay = other.Ay; this->Bx = other.Bx; this->By = other.By; } Segment(Segment&& other) { this->Ax = other.Ax; this->Ay = other.Ay; this->Bx = other.Bx; this->By = other.By; } bool isEqvil(Segment& other) { return this->Ax == other.Ax && this->Ay == other.Ay && this->Bx && other.Bx && this->By == other.By; } bool isCrossover(Segment& other) { return other.Bx < Ax&& other.Ax > By && other.By < Ay&& other.Ay > By; } bool isParallel(Segment& other) { return Ay / other.Ay == By / other.By; } void Input() { cout << "Введите две точки А и В" << endl; cout << "Введите х для точки А: "; cin >> Ax; cout << "Введите y для точки А: "; cin >> Ay; cout << endl; cout << "Введите х для точки B: "; cin >> Bx; cout << "Введите y для точки B: "; cin >> By; } void Print() { cout << "A(" << Ax << ", " << Ay << ")" << endl; cout << "B(" << Bx << ", " << By << ")" << endl; } };
18. «Окружность в двумерном пространстве»
#define _USE_MATH_DEFINES #include <cmath> #include <iostream> using namespace std; class CircleInTwoDimensions { private: double x; double y; double r; public: //конструктор по умолчанию CircleInTwoDimensions() { x = 0; y = 0; r = 0; } //параметрический конструктор CircleInTwoDimensions(double x, double y, double r) { this->x = x; this->y = y; this->r = r; } //конструктор копирования CircleInTwoDimensions(const CircleInTwoDimensions& object) { this->x = object.x; this->y = object.y; this->r = object.r; } //конструктор перемещения CircleInTwoDimensions(CircleInTwoDimensions&& object) noexcept { this->x = object.x; this->y = object.y; this->r = object.r; } //функция ввода void input() { double x, y, r; cout << "Введите координату х -> "; cin >> x; cout << "Введите координату y -> "; cin >> y; do { cout << "Введите радиус r -> "; cin >> r; if (r < 0)cout << "Радиус не может быть отрицательным"; } while (r <= 0); this->x = x; this->y = y; this->r = r; } //сравнение окружностей bool comparison(CircleInTwoDimensions object) { if (object.r > this->r) return true; else return false; } //функция вычисления периметра окружности double perimeter() { return 2 * M_PI * r; } //функция вычисления площади окружности double sqaure() { return M_PI * r * r; } //функция проверки на пересечение окружностей bool crossingChecking(CircleInTwoDimensions object) { //если у окружностей совпадают центры окружности и их радиусы равны, пересечение будет; //если центры окружностей совпадают но радиусы разные, пересечения нет if (object.x == this->x && object.y == this->y) { if (object.r == this->r) return true; else return false; } if (sqrt(pow(object.x - this->x, 2) + pow(object.y - this->y, 2)) <= object.r + this->r) return true; if (sqrt(pow(object.x - this->x, 2) + pow(object.y - this->y, 2)) > object.r + this->r) return false; } //проверка на концентричность окружностей bool ifConcentricity(CircleInTwoDimensions object) { if (object.x == this->x && object.y == this->y) return true; else return false; } };
19. «Сектор круга»
#define _USE_MATH_DEFINES #include <cmath> #include <iostream> using namespace std; class CircleSector { private: double corner; double r; public: //конструктор по умолчанию CircleSector() { corner = 0; r = 0; } //параметрический конструктор CircleSector(double corner, double r) { this->corner = corner; this->r = r; } //конструктор копирования CircleSector(const CircleSector& object) { this->corner = object.corner; this->r = object.r; } //конструктор перемещения CircleSector(CircleSector&& object) noexcept { this->corner = object.corner; this->r = object.r; } //функция ввода void input() { double corner, r; do { cout << "Введите угол сектора corner -> "; cin >> corner; if (corner < 0) cout << "Угол не может быть отрицательным"; if (corner == 0)cout << "Укажите угол сектора"; } while (corner <= 0); do { cout << "Введите радиус r -> "; cin >> r; if (r < 0)cout << "Радиус не может быть отрицательным"; if (r == 0)cout << "Укажите радиус окружности"; } while (r <= 0); this->corner = corner; this->r = r; } //сравнение секторов по площади bool comparison(CircleSector object) { if ((M_PI * object.r * object.r * (object.corner / 360)) == (M_PI * this->r * this->r * (this->corner / 360))) return true; else return false; } //функция вычисления периметра double perimeter() { return 2 * M_PI * r * (corner / 360); } //функция вычисления площади double sqaure() { return M_PI * r * r * (corner / 360); } };
20. «Кольцо в двумерном пространстве»
#define _USE_MATH_DEFINES #include <cmath> #include <iostream> using namespace std; class Rings { private: double x; double y; double r1; double r2; public: //конструктор по умолчанию Rings() { x = 0; y = 0; r1 = 0; r2 = 0; } //параметрический конструктор Rings(double x, double y, double r1, double r2) { this->x = x; this->y = y; this->r1 = r1; this->r2 = r2; } //конструктор копирования Rings(const Rings& object) { this->x = object.x; this->y = object.y; this->r1 = object.r1; this->r2 = object.r2; } //конструктор перемещения Rings(Rings&& object) noexcept { this->x = object.x; this->y = object.y; this->r1 = object.r1; this->r2 = object.r2; } //функция ввода void input() { double x, y, r; cout << "Введите координату х -> "; cin >> x; cout << "Введите координату y -> "; cin >> y; do { cout << "Введите радиус r1 -> "; cin >> r; if (r1 < 0)cout << "Радиус не может быть отрицательным"; } while (r1 <= 0); do { cout << "Введите радиус r2 -> "; cin >> r; if (r2 < 0)cout << "Радиус не может быть отрицательным"; } while (r2 <= 0); this->x = x; this->y = y; this->r1 = r1; this->r2 = r2; } //сравнение колец bool comparison(Rings object) { double s11, s12, s21, s22; s11 = M_PI * this->r1 * this->r1; s12 = M_PI * this->r2 * this->r2; s21 = M_PI * object.r1 * object.r1; s22 = M_PI * object.r2 * object.r2; if (abs(s11 - s12) == abs(s21 - s22)) return true; else return false; } //функция вычисления периметра кольца (сумма периметров внутренней и внешней окружности) double perimeter() { return 2 * M_PI * r1 + 2 * M_PI * r2; } //функция вычисления площади кольца double sqaure() { double s1, s2; s1 = M_PI * r1 * r1; s2 = M_PI * r2 * r2; return abs(s1-s2); } };
21. «Прямоугольник в двумерном пространстве»
#define _USE_MATH_DEFINES #include <cmath> #include <iostream> using namespace std; class Rectangles { private: double x; double y; double width; double height; public: //конструктор по умолчанию Rectangles() { x = 0; y = 0; width = 0; height = 0; } //параметрический конструктор Rectangles(double x, double y, double width, double height) { this->x = x; this->y = y; this->width = width; this->height = height; } //конструктор копирования Rectangles(const Rectangles& object) { this->x = object.x; this->y = object.y; this->width = object.width; this->height = object.height; } //конструктор перемещения Rectangles(Rectangles&& object) noexcept { this->x = object.x; this->y = object.y; this->width = object.width; this->height = object.height; } //функция ввода void input() { double x, y, r; cout << "Введите координату х -> "; cin >> x; cout << "Введите координату y -> "; cin >> y; do { cout << "Введите ширину width -> "; cin >> r; if (width < 0)cout << "Ширина не может быть отрицательной"; } while (width <= 0); do { cout << "Введите высоту height -> "; cin >> r; if (height < 0)cout << "Высота не может быть отрицательной"; } while (height <= 0); this->x = x; this->y = y; this->width = width; this->height = height; } //сравнение прямоугольников bool comparison(Rectangles object) { double s1, s2; s1 = this->width * this->height; s2 = object.width * object.width; if (s1 == s2) return true; else return false; } //функция вычисления периметра double perimeter() { return (width + height) * 2; } //функция вычисления площади double sqaure() { return width * height; } };
22. «Треугольник в двумерном пространстве»
#define _USE_MATH_DEFINES #include <cmath> #include <iostream> using namespace std; class Triangles { private: double a; double b; double c; public: //конструктор по умолчанию Triangles() { a = 0; b = 0; c = 0; } //параметрический конструктор Triangles(double a, double b, double c) { this->a = a; this->b = b; this->c = c; } //конструктор копирования Triangles(const Triangles& object) { this->a = object.a; this->b = object.b; this->c = object.c; } //конструктор перемещения Triangles(Triangles&& object) noexcept { this->a = object.a; this->b = object.b; this->c = object.c; } //функция ввода void input() { double a, b, c; bool check_traingle_rool = false; do { do { cout << "Введите длину первой стороны a -> "; cin >> a; if (a < 0)cout << "Сторона не может быть отрицательной"; if (a == 0)cout << "Введите значение стороны"; } while (a <= 0); do { cout << "Введите длину второй стороны b-> "; cin >> b; if (b < 0)cout << "Сторона не может быть отрицательной"; if (b == 0)cout << "Введите значение стороны"; } while (b <= 0); do { cout << "Введите длину третьей стороны c-> "; cin >> c; if (c < 0)cout << "Сторона не может быть отрицательной"; if (c == 0)cout << "Введите значение стороны"; } while (c <= 0); if (a + b > c || a + c > b || b + c > a) check_traingle_rool = true; } while (check_traingle_rool == false); this->a = a; this->b = b; this->c = c; } // функция сравнения треугольников bool comparison(Triangles object) { double s1, s2, p1, p2; // p - полупериметр p1 = (this->a + this->b + this->c) / 2; p2 = (object.a + object.b + object.c) / 2; s1 = sqrt(p1 * (p1 - this->a) * (p1 - this->b) * (p1 - this->c)); s2 = sqrt(p2 * (p2 - object.a) * (p2 - object.b) * (p2 - object.c)); if (s1 == s2) return true; else return false; } //функция вычисления периметра double perimeter() { return a + b + c; } //функция вычисления площади double sqaure() { double p, s; // р - полупериметр p = (this->a + this->b + this->c) / 2; s = sqrt(p * (p - this->a) * (p - this->b) * (p - this->c)); return s; } //функция проверки треугольника на прямоугольность bool isRectangular() { if ((a * a == b * b + c * c) || (b * b == a * a + c * c) || (c * c == a * a + b * b)) return true; else return false; } //функция проверки треугольника на равнобедренность bool isIsosceles() { if (a == b || a == c || b == c) return true; else return false; } //функция проверки треугольника на равносторонность bool isEquilateral() { if (a == b == c) return true; else return false; } };
23. «Треугольник в двумерном пространстве»
#define _USE_MATH_DEFINES #include <cmath> #include <iostream> using namespace std; class Triangles { private: double aX; double aY; double bX; double bY; double cX; double cY; public: //конструктор по умолчанию Triangles() { aX = 0; aY = 0; bX = 0; bY = 0; cX = 0; cY = 0; } //параметрический конструктор Triangles(double aX, double aY, double bX, double bY, double cX, double cY) { this->aX = aX; this->aY = aY; this->bX = bX; this->bY = bY; this->cX = cX; this->cY = cY; } //конструктор копирования Triangles(const Triangles& object) { this->aX = object.aX; this->aY = object.aY; this->bX = object.bX; this->bY = object.bY; this->cX = object.cX; this->cY = object.cY; } //конструктор перемещения Triangles(Triangles&& object) noexcept { this->aX = object.aX; this->aY = object.aY; this->bX = object.bX; this->bY = object.bY; this->cX = object.cX; this->cY = object.cY; } //функция ввода void input() { double aX, aY, bX, bY, cX, cY; cout << "Введите координаты точки a: "; cin >> aX >> aY; cout << "Введите координаты точки b: "; cin >> bX >> bY; cout << "Введите координаты точки c: "; cin >> cX >> cY; this->aX = aX; this->aY = aY; this->bX = bX; this->bY = bY; this->cX = cX; this->cY = cY; } // функция сравнения треугольников bool comparison(Triangles object) { double s1, s2; s1 = 1 / 2 * ((this->bX - this->aX) * (this->cY - this->aY) - (this->cX - this->aX) * (this->bY - this->aY)); s2 = 1 / 2 * ((object.bX - object.aX) * (object.cY - object.aY) - (object.cX - object.aX) * (object.bY - object.aY)); if (s1 == s2) return true; else return false; } //функция вычисления периметра double perimeter() { double a, b, c; // длины сторон треугольника a = sqrt(pow((bX - aX), 2) - pow((bY - aY), 2)); b = sqrt(pow((cX - bX), 2) - pow((cY - bY), 2)); c = sqrt(pow((aX - cX), 2) - pow((aY - cY), 2)); return a + b + c; } //функция вычисления площади double sqaure() { double s; s = 1 / 2 * ((this->bX - this->aX) * (this->cY - this->aY) - (this->cX - this->aX) * (this->bY - this->aY)); return s; } // функция проверки попадения произвольной точки в треугольник bool check(double oX, double oY) { // использую метод сравнения площадей: если точка попадает в треугольник, то при соединении с вершинами она разбивает его на 3 треугольника // находим площади этих треугольников и сравниваем их с площадью исходного треугольника // соответственно, если сумма больше, то точка выходит за пределы треугольника double s1, s2, s3, s; s1 = 1 / 2 * ((bX - aX) * (oY - aY) - (oX - aX) * (bY - aY)); s2 = 1 / 2 * ((cX - bX) * (oY - bY) - (oX - bX) * (cY - bY)); s3 = 1 / 2 * ((oX - aX) * (cY - aY) - (cX - aX) * (oY - aY)); s = 1 / 2 * ((bX - aX) * (cY - aY) - (cX - aX) * (bY - aY)); if (s1 + s2 + s3 == s) return true; else return false; } };
24. «Матрица 2×2 вещественных чисел»
#define _USE_MATH_DEFINES #include <cmath> #include <iostream> using namespace std; class Matrix { private: static double mas[2][2]; public: //конструктор по умолчанию Matrix() { for (int i = 0; i < 2; i++) for (int j = 0; j < 2; j++) mas[i][j] = 0; } //параметрический конструктор Matrix(double arr[2][2]) { for (int i = 0; i < 2; i++) for (int j = 0; j < 2; j++) mas[i][j] = arr[i][j]; } //конструктор копирования Matrix(const Matrix& object) { for (int i = 0; i < 2; i++) for (int j = 0; j < 2; j++) this->mas[i][j] = object.mas[i][j]; } //конструктор перемещения Matrix(Matrix&& object) noexcept { for (int i = 0; i < 2; i++) for (int j = 0; j < 2; j++) this->mas[i][j] = object.mas[i][j]; } //функция ввода void input() { cout << "Заполните массив 2х2 ->" << endl; for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { cin >> mas[i][j]; } cout << endl; } } // функция сложения матриц Matrix sum(Matrix object) { double arr[2][2]; for (int i = 0; i < 2; i++) for (int j = 0; j < 2; j++) arr[i][j] = this->mas[i][j] + object.mas[i][j]; return Matrix(arr); } // функция умножения матриц Matrix mul(Matrix object) { double arr[2][2]; for (int i = 0; i < 2; i++) for (int j = 0; j < 2; j++) for (int count = 0; count < 2; count++) arr[i][j] += this->mas[i][j] * object.mas[i][j]; return Matrix(arr); } // функция умножения матрицы на число Matrix mulOnNumber(double number) { double arr[2][2]; for (int i = 0; i < 2; i++) for (int j = 0; j < 2; j++) arr[i][j] = this->mas[i][j] * number; return Matrix(arr); } // функция сравнения bool comparison(Matrix object) { bool check = false; for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { if (this->mas[i][j] == object.mas[i][j]) check = true; else { check = false; break; } } } return check; } // функция вычисления определителя матрицы double determinant() { double det; det = mas[0][0] * mas[1][1] - mas[0][1] * mas[1][0]; return det; } // функция транспонирования матрицы void transposition() { double arr[2][2]; for (int i = 0; i < 2; i++) for (int j = 0; j < 2; j++) arr[i][j] = mas[j][i]; for (int i = 0; i < 2; i++) for (int j = 0; j < 2; j++) mas[i][j] = arr[i][j]; } };
25. «Матрица 3×3 вещественных чисел»
#define _USE_MATH_DEFINES #include <cmath> #include <iostream> using namespace std; class Matrix { private: static double mas[3][3]; public: //конструктор по умолчанию Matrix() { for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) mas[i][j] = 0; } //параметрический конструктор Matrix(double arr[3][3]) { for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) mas[i][j] = arr[i][j]; } //конструктор копирования Matrix(const Matrix& object) { for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) this->mas[i][j] = object.mas[i][j]; } //конструктор перемещения Matrix(Matrix&& object) noexcept { for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) this->mas[i][j] = object.mas[i][j]; } //функция ввода void input() { cout << "Заполните массив 2х2 ->" << endl; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { cin >> mas[i][j]; } cout << endl; } } // функция сложения матриц Matrix sum(Matrix object) { double arr[3][3]; for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) arr[i][j] = this->mas[i][j] + object.mas[i][j]; return Matrix(arr); } // функция умножения матриц Matrix mul(Matrix object) { double arr[3][3]; for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) for (int count = 0; count < 3; count++) arr[i][j] += this->mas[i][j] * object.mas[i][j]; return Matrix(arr); } // функция умножения матрицы на число Matrix mulOnNumber(double number) { double arr[3][3]; for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) arr[i][j] = this->mas[i][j] * number; return Matrix(arr); } // функция сравнения bool comparison(Matrix object) { bool check = false; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (this->mas[i][j] == object.mas[i][j]) check = true; else { check = false; break; } } } return check; } // функция вычисления определителя матрицы double determinant() { double det; det = mas[0][0] * mas[1][1] * mas[2][2] - mas[0][0] * mas[1][2] * mas[2][1] - mas[0][1] * mas[1][0] * mas[2][2] + mas[0][1] * mas[1][2] * mas[2][0] + mas[0][2] * mas[1][0] * mas[2][1] - mas[0][2] * mas[1][1] * mas[2][0]; return det; } // функция транспонирования матрицы void transposition() { double arr[3][3]; for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) arr[i][j] = mas[j][i]; for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) mas[i][j] = arr[i][j]; } };
26. «Счетчик»
#define _USE_MATH_DEFINES #include <cmath> #include <iostream> using namespace std; class Counter { private: double min_v; double max_v; double now_v; double step; public: //конструктор по умолчанию Counter() { min_v = 0; max_v = 0; now_v = 0; step = 0; } //параметрический конструктор Counter(double min_v, double max_v, double now_v, double step) { this->min_v = min_v; this->max_v = max_v; this->now_v = now_v; this->step = step; } //конструктор копирования Counter(const Counter& object) { this->min_v = object.min_v; this->max_v = object.max_v; this->now_v = object.now_v; this->step = object.step; } //конструктор перемещения Counter(Counter&& object) noexcept { this->min_v = object.min_v; this->max_v = object.max_v; this->now_v = object.now_v; this->step = object.step; } //функция ввода void input() { double min_v, max_v, now_v, step; cout << "Введите минимальное значение счетчика"; cin >> min_v; cout << "Введите максимальное значение счетчика"; cin >> max_v; cout << "Введите текущее значение счетчика"; cin >> now_v; cout << "Введите шаг значение счетчика"; cin >> step; this->min_v = min_v; this->max_v = max_v; this->now_v = now_v; this->step = step; } // функция сравнения bool comparison(Counter object) { if (this->min_v == object.min_v && this->max_v == object.max_v && this->step == object.step) return true; else return false; } // функция приращения на шаг void push() { now_v += step; } // функция уменьшения на шаг void pull() { now_v -= step; } // функция получения текущего значения счетчика double getCounter() { return now_v; } };
27. «Диапазон на числовой прямой»
#define _USE_MATH_DEFINES #include <cmath> #include <iostream> using namespace std; class NumberLine { private: double left_border; double right_border; public: // конструктор по умолчанию NumberLine() { this->left_border = 0; this->right_border = 0; } // параметрический конструктор NumberLine(double left_border, double right_border) { this->left_border = left_border; this->right_border = right_border; } // конструктор копирования NumberLine(const NumberLine& object) { this->left_border = left_border; this->right_border = right_border; } // конструктор перемещения NumberLine(NumberLine&& object) noexcept { this->left_border = left_border; this->right_border = right_border; } // функция ввода void input() { double left_border, right_border; cout << "Введите левую границу ->"; cin >> left_border; cout << "Введите правую границу ->"; cin >> right_border; this->left_border = left_border; this->right_border = right_border; } // сравнение диапазонов bool comparison(NumberLine object) { if (this->left_border == object.left_border && this->right_border == object.right_border) return true; else return false; } // функция нахождения длины диапазона double length() { double length; length = right_border - left_border; return length; } // функция проверки попадания числа в диапазон bool check(double number) { if (number > left_border && number < right_border) return true; else return false; } // функция проверки не пересекаются ли диапазоны bool checkCrossing(NumberLine object) { if ((object.left_border >= this->left_border && object.left_border <= this->right_border) || (object.right_border >= this->left_border && object.right_border <= this->right_border)) return true; else return false; } };
28. «Геометрическая прогрессия»
#include <iostream> #include <cmath> using namespace std; class GeometricProgression { private: int first; int step; public: GeometricProgression() { first = 0; step = 0; } GeometricProgression(int first, int step) { this->first = first; this->step = step; } GeometricProgression(GeometricProgression& other) { this->first = other.first; this->step = other.step; } GeometricProgression(GeometricProgression&& other) { this->first = other.first; this->step = other.step; } GeometricProgression Sum(GeometricProgression&& other) { GeometricProgression sum; if (step != other.step) abort(); sum.first = first + other.first; sum.step = step; return sum; } GeometricProgression Sub(GeometricProgression&& other) { GeometricProgression sub; if (step != other.step) abort(); sub.first = first - other.first; sub.step = step; return sub; } GeometricProgression MultiplyWithNum (int n){ GeometricProgression multiply; multiply.first = first * n; multiply.step = step; return multiply; } int SumOfN(int n) { return first * (pow(step, n) - 1) / step - 1; } int GetNthTerm(int n) { return first * pow(step, n -1); } void Input() { cout << "Введите первый елемент геометрической прогресии b1: "; cin >> first; cout << "Введите шаг геометрической прогресии q: "; cin >> step; } void Print() { cout << "b1: " << first << "\tq: " << step << endl; } };
29. «Арифметическая прогрессия»
#include <iostream> using namespace std; class Arithmetic { private: int first; int step; public: Arithmetic() { first = 0; step = 0; } Arithmetic(int first, int step) { this->first = first; this->step = step; } Arithmetic(Arithmetic& other) { this->first = other.first; this->step = other.step; } Arithmetic(Arithmetic&& other) { this->first = other.first; this->step = other.step; } Arithmetic Sum(Arithmetic&& other) { Arithmetic sum; if (step != other.step) abort(); sum.first = first + other.first; sum.step = step * 2; return sum; } Arithmetic Sub(Arithmetic&& other) { Arithmetic sub; if (step != other.step) abort(); sub.first = first - other.first; sub.step = step / 2; return sub; } Arithmetic MultiplyWithNum(int n) { Arithmetic multiply; multiply.first = first * n; multiply.step = step * n; return multiply; } int SumOfN(int n) { return ((2 * first + step * (n - 1)) / 2) * n; } int GetNthTerm(int n) { return first + step * (n - 1); } void Input() { cout << "Введите первый елемент геометрической прогресии a1: "; cin >> first; cout << "Введите шаг геометрической прогресии d: "; cin >> step; } void Print() { cout << "a1: " << first << "\td: " << step << endl; } };