ulvis.paste.net

Paste Search Dynamic
Recent pastes
calculate
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4. class math
  5. {
  6.   public:
  7.   int a, b, c;
  8.   int x1, x2;
  9.   int vertex_x, vertex_y;
  10.   int D;
  11.  
  12.   math(int a, int b, int c)
  13.   {
  14.     //проверка корректности введённых данных
  15.      if(a == 0)
  16.      {
  17.         a = 1;
  18.         cout << "Коэффициент a не может быть равен 0" << endl;;
  19.      }
  20.          this->a = a;
  21.      this->b = b;
  22.      this->c = c;
  23.      calculate();
  24.  
  25.   }
  26.  
  27.  
  28.   void calculate()
  29.  {
  30.      //расчёты дискриминанта
  31.      D = (b * b) - (4 * a * c);
  32.  
  33.      //расчёт корней
  34.      x1 = (-b + sqrt(D)) / (2 * a);
  35.      x2 = (-b - sqrt(D)) / (2 * a);
  36.  
  37.      //расчёт вершины параболы
  38.         vertex_x= -b / 2 / a;
  39.         vertex_y= -D / 4 / a;
  40.  
  41.  
  42.   }
  43.  
  44.  
  45.   void print()
  46.   {
  47.         //вывод уравнения
  48.     cout <<"Квадратное уравнение: " <<  (a == 1 ? " " : "" + a) <<"x^2"<<( b > 0? " + ": " ")<< b << "x" <<( c > 0? " + ": " ") << c << " = 0"<<endl ;
  49.  
  50.       if(D > 0)
  51.       {
  52.         if((x1 != 0) && (x2 != 0)) cout <<"Разложение на множители: " << (a == 1 ? "": "" + a)<< "(x " << (x1 >= 0?"+" : "") << x1 <<")" << "(x "<< (x2 >= 0?"+" : "") << x2 << ")" << endl;
  53.         if((x1 != 0) && (x2 == 0)) cout <<"Разложение на множители: " << (a == 1 ? "": "" + a)<< "(x " << (x1 >= 0?"+" : "") << x1 <<")" << "x" << endl;
  54.         if((x1 == 0) && (x2 != 0)) cout <<"Разложение на множители: " << (a == 1 ? "": "" + a)<< "x" << x1 << "(x "<< (x2 >= 0?"+" : "") << x2 << ")" << endl;
  55.       }
  56.         // вывод полного квадрата
  57.     cout << "Полный квадрат: ";
  58.     if (vertex_x == 0 && vertex_y != 0)  cout << (a == 1? "":""+a)<<"x^2"<<(vertex_y > 0?  "+":"")<<vertex_y<<"= 0"<<endl;
  59.  
  60.     if (vertex_x != 0 && vertex_y != 0) cout << (a == 1? "":""+a) <<(-vertex_x > 0 ? "(x+" : "(x")<< -vertex_x << ")^2"<<(vertex_y > 0?  "+":"")<<vertex_y<<"= 0"<<endl;
  61.  
  62.     if(vertex_y == 0 && vertex_x != 0) cout << (a == 1? "":""+a) <<(-vertex_x > 0 ? "(x+" : "(x")<< -vertex_x << ")^2"<<"= 0"<<endl;
  63.  
  64.     if(vertex_x == 0 && vertex_y == 0) cout << "x^2" << endl;
  65.  
  66.    //вывод дискриминанта
  67.     cout << "Дискриминант: " << D << endl;
  68.  
  69.     // вывод корней уравнения
  70.         if(D >= 0)
  71.    {
  72.                 cout << "Корни уравнения" <<endl;
  73.         if(x1 != x2)
  74.         {
  75.                 cout << "x1: "<< x1 << endl;
  76.                 cout << "x2: "<< x2 << endl;
  77.             }
  78.        else cout << x1 << endl;
  79.        }
  80.  
  81.         else cout << " Нет корней " << endl;
  82.  
  83.     //вывод координаты вершины параболы
  84.         cout << "Координаты вершины параболы : " << "(" << vertex_x << ",  " << vertex_y <<")" << endl;
  85.  
  86.   }
  87.  
  88. void shift(int x0, int y0)
  89. {
  90.   int b1, c1;
  91.   // расчёт сдвига вершины параболы
  92.   b1 = vertex_x + x0;
  93.   c1 = vertex_y + y0;
  94.   // расчёт коэффициентов
  95.   b = (-a) * b1 * 2;
  96.   c = a*(b1 * b1) + c1;
  97.  
  98.   cout << "Изменение вершины параболы на "<< "(" << x0<< ","<< y0<< ")"<< endl;
  99.   cout << endl;
  100.   calculate();
  101. }
  102. };
  103. int main()
  104. {
  105.     int a = 0, b = 0, c = 0, y0 = 0, x0 = 0;
  106.  
  107.          cin >> a;
  108.         cin >> b;
  109.         cin >> c;
  110.         cin >> x0;
  111.         cin >> y0;
  112.  
  113.         math m(a, b, c);
  114.         m.print();
  115.         m.shift(x0,y0);
  116.         m.print();
  117.  
  118.         return 0;
  119. }
Parsed in 0.035 seconds