[text] main.cpp

Viewer

copydownloadembedprintName: main.cpp
  1. //0,5,10
  2. #include <iostream>
  3. #include <cmath>
  4. #include <limits>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. class Description {
  10. public:
  11.     static void show() {
  12.         cout << "\033[2J\033[H" << endl; 
  13.         cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl
  14.             << "|" << "Решение квадратного уравнения ax^2 + bx + c = 0:" << "                                                 | " << endl
  15.              << "|" << "1. Вычислить дискриминант: D = b^2 - 4ac." << "                                                        | "<< endl
  16.              << "|" << "2. Если D > 0, то у уравнения два корня: x1 = (-b + sqrt(D)) / (2a) и x2 = (-b - sqrt(D)) / (2a)."<< "| " << endl
  17.              << "|" << "3. Если D = 0, то у уравнения один корень: x = -b / (2a)." << "                                        | "<< endl
  18.              << "|" << "4. Если D < 0, то у уравнения нет действительных корней." << "                                         | "<< endl
  19.              << "|" << "'sqrt' - обозначает квадратный корень числа"<< "                                                      | " << endl
  20.              << "|" << "'D' - обозначает дискриминант" << "                                                                    |" << endl
  21.              << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl ;
  22.     }
  23. };
  24.  
  25. class Instruction {
  26. public:
  27.     static void show() {
  28.         cout << "\033[2J\033[H" << endl; 
  29.         cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl
  30.             << "| Пользователю для выбора предлагается 4 пункта :                                                  |" << endl
  31.             << "| При выборе пункта №1, пользователю будет представлено описание решения с помощью дискриминанта,  |" << endl
  32.             << "| а также специфика работы программы.                                                              |" << endl 
  33.             << "| При выборе пункта №2, от пользователя потребуется ввести коэффициенты уравнения.                 |" << endl 
  34.             << "| Далее программа проведет расчет и выведет пользователю значение дискриминанта, а также значения  |" << endl
  35.             << "| корней.                                                                                          |" << endl
  36.             << "| При выборе пункта №4, программа незамедлительно завершит свою работу.                            |" << endl
  37.             << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl ;
  38.     }
  39. };
  40.  
  41.  
  42.  
  43. class DiscriminantSolutions {
  44. private:
  45.     double a, b, c;
  46.  
  47. public:
  48.     DiscriminantSolutions(double a, double b, double c) : a(a), b(b), c(c) {}
  49.  
  50.     void solve() {
  51.         double discriminant = b * b - 4 * a * c;
  52.         cout << "Дискриминант D = " << discriminant << endl;
  53.         if (a == 0) {
  54.             if (b != 0) {
  55.                 double x = -c / b;
  56.                 cout << "Уравнение является линейным и имеет один корень:\n"
  57.                      << "x = -" << c << " / " << b << " = " << x << "\n";
  58.             } else if (c == 0) {
  59.                 cout << "Уравнение тождественно истинно, бесконечное количество корней.\n";
  60.             } else {
  61.                 cout << "Уравнение не имеет корней.\n";
  62.             }
  63.         } else {
  64.             if (discriminant > 0) {
  65.                 double sqrtD = sqrt(discriminant);
  66.                 double denominator = 2 * a;
  67.                 double x1 = (-b + sqrtD) / denominator;
  68.                 double x2 = (-b - sqrtD) / denominator;
  69.                 cout << "Уравнение имеет два действительных корня:\n"
  70.                      << "x1 = (-" << b << " + sqrt(" << discriminant << ")) / (2 * " << a << ") = " << x1 << "\n"
  71.                      << "x2 = (-" << b << " - sqrt(" << discriminant << ")) / (2 * " << a << ") = " << x2 << "\n";
  72.             } else if (discriminant == 0) {
  73.                 double x = -b / (2 * a);
  74.                 cout << "Уравнение имеет один действительный корень:\n"
  75.                      << "x = -" << b << " / (2 * " << a << ") = " << x << "\n";
  76.             } else {
  77.                 cout << "Уравнение не имеет действительных корней, так как D < 0.\n";
  78.             }
  79.         }
  80.     }
  81. };
  82.  
  83.  
  84.  
  85.  
  86. int main() {
  87.     int choice;
  88.     double a, b, c;
  89.  
  90.     do {
  91.  
  92.         cout << "~~~~~~~~~~~~~~~~~~~"<< "Меню" << "~~~~~~~~~~~~~~~~~~~~" << endl
  93.              << "|" << "1. Описание решения квадратного уравнения" << "|" << endl
  94.              << "|" << "2. Решить квадратное уравнение" << "           |" << endl
  95.              << "|" << "3. Инструкция по эксплуатации" << "            |"  << endl
  96.              << "|" << "4. Завершить работу программы" << "            |" << endl
  97.              << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
  98.         cin >> choice;
  99.  
  100.  
  101.  
  102.         if (cin.fail() || choice < 1 || choice > 4 || cin.peek() != '\n') {
  103.             cout << "\033[2J\033[H" << endl;
  104.             cout << "Ошибка! Пожалуйста, введите целое число от 1 до 4.\n" ;
  105.             cout << " " << endl ;
  106.             cin.clear();
  107.             cin.ignore(numeric_limits<streamsize>::max(), '\n');
  108.             continue;
  109.         }
  110.  
  111.         
  112.  
  113.         switch (choice) {
  114.             case 1:
  115.  
  116.                 Description::show();
  117.                 
  118.                 cout << "Нажмите Enter для возвращения в главное меню.";
  119.                 cin.ignore();
  120.                 cin.get();
  121.                 cout << "\033[2J\033[H" << endl; 
  122.                 break;
  123.             case 2:
  124.  
  125.                 cout << "Введите коэффициенты a, b, c: ";
  126.                 cin >> a >> b >> c;
  127.  
  128.                 if (cin.fail()) { 
  129.                     cout << "\033[2J\033[H" << endl; 
  130.                     cout << "Коэффициенты должны быть числами,попробуйте еще раз.\n";
  131.                     cin.clear();
  132.                     cin.ignore(numeric_limits<streamsize>::max(), '\n');
  133.                     
  134.                     
  135.                     
  136.                     break; 
  137.                 }
  138.  
  139.                 DiscriminantSolutions(a, b, c).solve();
  140.  
  141.                 cout << "Нажмите Enter для возвращения в главное меню.";
  142.                 cin.ignore();
  143.                 cin.get();
  144.                 cout << "\033[2J\033[H" << endl; 
  145.                 break;
  146.             case 3:
  147.                 Instruction::show();
  148.                 
  149.                 cout << "Нажмите Enter для возвращения в главное меню.";
  150.                 cin.ignore();
  151.                 cin.get();
  152.                 cout << "\033[2J\033[H" << endl; 
  153.                 break;
  154.             case 4:
  155.                 
  156.  
  157.                 cout << "\033[2J\033[H" << endl; 
  158.                 cout << "~~~~~~~~~~~~~~~~~~~~~~~~" << endl 
  159.                     << "| "<< "Программа завершена." << " |" << endl
  160.                     << "~~~~~~~~~~~~~~~~~~~~~~~~" << endl; 
  161.                 break;
  162.  
  163.  
  164.  
  165.  
  166.             
  167.  
  168.  
  169.         }
  170.     } while (choice != 4);
  171.     
  172.  
  173.     return 0;
  174. }

Editor

You can edit this paste and save as new:


File Description
  • main.cpp
  • Paste Code
  • 07 May-2024
  • 8.09 Kb
You can Share it: