#include <iostream>
using namespace std;
class BaseUravneniy
{
protected:
double a, b;
public:
BaseUravneniy();
virtual ~BaseUravneniy(){}
virtual void EquationRoot() = 0;
};
BaseUravneniy::BaseUravneniy()
{
cout << "Vvedite znachenie A = ";
cin >> a;
cout << "Vvedite znachenie B = ";
cin >> b;
}
/* линейное уравнение
* Ax + B = 0
*/
class LineynoeUravnenie : BaseUravneniy
{
public:
LineynoeUravnenie ();
~LineynoeUravnenie () {}
void EquationRoot() override;
};
LineynoeUravnenie::LineynoeUravnenie()
{
cout << "Uravnenie imeet vid " << a << "x + " << b << " = 0" << endl;
}
void LineynoeUravnenie::EquationRoot()
{
double x;
x = -b / a;
cout << "Koren uravneniya raven x=" << x << endl << endl;
}
/* квадратичное уравнение
* Ax^2 + Bx + c = 0
*/
class KvadratichnoeUravnenie : BaseUravneniy
{
private:
double c;
public:
KvadratichnoeUravnenie();
~KvadratichnoeUravnenie() {}
void EquationRoot() override;
};
KvadratichnoeUravnenie::KvadratichnoeUravnenie()
{
cout << "Vvedite znachenie C = ";
cin >> c;
cout << "Uravnenie imeet vid " << a << "x^2 + " << b << "x +" << c << " = 0" << endl;
}
void KvadratichnoeUravnenie::EquationRoot()
{
double x1, x2;
// определяем дискриминант
// D=b^2-4ac
double d = b * b - 4 * a * c;
if (d < 0)
{
cout << "Koren ne soderzet deystvikelnyh chisel" << endl << endl;
return;
}
if (d == 0)
{
x1 = x2 = -b / (2 * a);
}
else if (d > 0)
{
x1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
x2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
}
cout << "Korni uravneniya ravny x1=" << x1 << ", x2=" << x2 << endl << endl;
}
int main(int argc, char *argv[])
{
LineynoeUravnenie lU = LineynoeUravnenie();
lU.EquationRoot();
KvadratichnoeUravnenie kU = KvadratichnoeUravnenie();
kU.EquationRoot();
return 0;
}
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.