void CLabka8Dlg::OnButton1()
{
UpdateData();
if (m_x>m_y)
{
CA ob1;
ob1.Rd(m_x,m_y,m_z);
m_r=ob1.reza();
}
else
{
CB ob2;
ob2.Rd(m_x,m_y,m_z);
m_r=ob2.rezb();
}
UpdateData(false);
}
Интерфейсная часть класса Fn
class Fn: public CObject
{
protected:
float x,y,z; double r;
public:
Fn();
virtual ~Fn();
void Rd (float,float,float);
};
class CA: public Fn
{
public:
CA();
virtual ~CA();
float reza();
};
class CB: public Fn
{
public:
CB();
virtual ~CB();
float rezb();
};
Реализация класса Fn:
Инициализация переменных:
void Fn::Rd(float x1,float y1,float z1)
{x=x1; y=y1; z=z1; }
Конструкторы
Fn::Fn()
{}
CA::CA()
{}
CB::CB()
{}
Деструктор
Fn::~Fn()
{}
CA::~CA()
{}
CB::~CB()
{}
Вычисления по формуле А
float CA::reza()
{
if(z==0) {
AfxMessageBox("На ноль делить нельзя. Значение Z не может быть равно 0.");
return 0;
}
else
{
r=(1.0+pow(log10(x+y),2))/(z*pow(fabs(y-x),1.0/3.0));
return r;
}
}
Вычисления по формуле B
float CB::rezb()
{
if(z==0)
{
AfxMessageBox("На ноль делить нельзя. Значение Z не может быть равно 0.");
return 0;
}
else
{
r=(y*pow(cos(x)/sin(x),2))/(2.0*pow(z,5));
return r;
}
}
Исходные данные и протокол выполнения работы.
Ввод данных,
X=10, y=5, z=2.