Консультация № 190334
23.12.2016, 17:25
0.00 руб.
0 1 1
Добрый день, уважаемые эксперты!
Помогите пожалуйста решить задачу: Создать абстрактный базовый класс с виртуальной функцией - корни уравнения. Создать производные классы: класс линейных уравнений и класс квадратных уравнений. Определить функцию вычисления корней уравнений.
Заранее спасибо!

Обсуждение

давно
Советник
400484
472
26.12.2016, 14:31
общий
это ответ
Здравствуйте, Nemesis!
Код:

#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;
}
5
Спасибо!
Форма ответа