- //0,5,10
- #include <iostream>
- #include <cmath>
- #include <limits>
- using namespace std;
- class Description {
- public:
- static void show() {
- cout << "\033[2J\033[H" << endl;
- cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl
- << "|" << "Решение квадратного уравнения ax^2 + bx + c = 0:" << " | " << endl
- << "|" << "1. Вычислить дискриминант: D = b^2 - 4ac." << " | "<< endl
- << "|" << "2. Если D > 0, то у уравнения два корня: x1 = (-b + sqrt(D)) / (2a) и x2 = (-b - sqrt(D)) / (2a)."<< "| " << endl
- << "|" << "3. Если D = 0, то у уравнения один корень: x = -b / (2a)." << " | "<< endl
- << "|" << "4. Если D < 0, то у уравнения нет действительных корней." << " | "<< endl
- << "|" << "'sqrt' - обозначает квадратный корень числа"<< " | " << endl
- << "|" << "'D' - обозначает дискриминант" << " |" << endl
- << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl ;
- }
- };
- class Instruction {
- public:
- static void show() {
- cout << "\033[2J\033[H" << endl;
- cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl
- << "| Пользователю для выбора предлагается 4 пункта : |" << endl
- << "| При выборе пункта №1, пользователю будет представлено описание решения с помощью дискриминанта, |" << endl
- << "| а также специфика работы программы. |" << endl
- << "| При выборе пункта №2, от пользователя потребуется ввести коэффициенты уравнения. |" << endl
- << "| Далее программа проведет расчет и выведет пользователю значение дискриминанта, а также значения |" << endl
- << "| корней. |" << endl
- << "| При выборе пункта №4, программа незамедлительно завершит свою работу. |" << endl
- << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl ;
- }
- };
- class DiscriminantSolutions {
- private:
- double a, b, c;
- public:
- DiscriminantSolutions(double a, double b, double c) : a(a), b(b), c(c) {}
- void solve() {
- double discriminant = b * b - 4 * a * c;
- cout << "Дискриминант D = " << discriminant << endl;
- if (a == 0) {
- if (b != 0) {
- double x = -c / b;
- cout << "Уравнение является линейным и имеет один корень:\n"
- << "x = -" << c << " / " << b << " = " << x << "\n";
- } else if (c == 0) {
- cout << "Уравнение тождественно истинно, бесконечное количество корней.\n";
- } else {
- cout << "Уравнение не имеет корней.\n";
- }
- } else {
- if (discriminant > 0) {
- double sqrtD = sqrt(discriminant);
- double denominator = 2 * a;
- double x1 = (-b + sqrtD) / denominator;
- double x2 = (-b - sqrtD) / denominator;
- cout << "Уравнение имеет два действительных корня:\n"
- << "x1 = (-" << b << " + sqrt(" << discriminant << ")) / (2 * " << a << ") = " << x1 << "\n"
- << "x2 = (-" << b << " - sqrt(" << discriminant << ")) / (2 * " << a << ") = " << x2 << "\n";
- } else if (discriminant == 0) {
- double x = -b / (2 * a);
- cout << "Уравнение имеет один действительный корень:\n"
- << "x = -" << b << " / (2 * " << a << ") = " << x << "\n";
- } else {
- cout << "Уравнение не имеет действительных корней, так как D < 0.\n";
- }
- }
- }
- };
- int main() {
- int choice;
- double a, b, c;
- do {
- cout << "~~~~~~~~~~~~~~~~~~~"<< "Меню" << "~~~~~~~~~~~~~~~~~~~~" << endl
- << "|" << "1. Описание решения квадратного уравнения" << "|" << endl
- << "|" << "2. Решить квадратное уравнение" << " |" << endl
- << "|" << "3. Инструкция по эксплуатации" << " |" << endl
- << "|" << "4. Завершить работу программы" << " |" << endl
- << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
- cin >> choice;
- if (cin.fail() || choice < 1 || choice > 4 || cin.peek() != '\n') {
- cout << "\033[2J\033[H" << endl;
- cout << "Ошибка! Пожалуйста, введите целое число от 1 до 4.\n" ;
- cout << " " << endl ;
- cin.clear();
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- continue;
- }
- switch (choice) {
- case 1:
- Description::show();
- cout << "Нажмите Enter для возвращения в главное меню.";
- cin.ignore();
- cin.get();
- cout << "\033[2J\033[H" << endl;
- break;
- case 2:
- cout << "Введите коэффициенты a, b, c: ";
- cin >> a >> b >> c;
- if (cin.fail()) {
- cout << "\033[2J\033[H" << endl;
- cout << "Коэффициенты должны быть числами,попробуйте еще раз.\n";
- cin.clear();
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- break;
- }
- DiscriminantSolutions(a, b, c).solve();
- cout << "Нажмите Enter для возвращения в главное меню.";
- cin.ignore();
- cin.get();
- cout << "\033[2J\033[H" << endl;
- break;
- case 3:
- Instruction::show();
- cout << "Нажмите Enter для возвращения в главное меню.";
- cin.ignore();
- cin.get();
- cout << "\033[2J\033[H" << endl;
- break;
- case 4:
- cout << "\033[2J\033[H" << endl;
- cout << "~~~~~~~~~~~~~~~~~~~~~~~~" << endl
- << "| "<< "Программа завершена." << " |" << endl
- << "~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
- break;
- }
- } while (choice != 4);
- return 0;
- }
[text] main.cpp
Viewer
*** This page was generated with the meta tag "noindex, nofollow". This happened because you selected this option before saving or the system detected it as spam. This means that this page will never get into the search engines and the search bot will not crawl it. There is nothing to worry about, you can still share it with anyone.
Editor
You can edit this paste and save as new: