donmike25 icon

c++ tuto 10 ques 1

donmike25 | PRO | 01/05/15 12:22:32 AM UTC | 0 ⭐ | 294 👁️ | Never ⏰ | []
C++ |

1.18 KB

|

None

|

0 👍

/

0 👎

#include <iostream>
using namespace std;
 
class Data
{
public:
    double m_Opposite;
    double m_Adjacent;
    double m_Hypotenuse;
 
};
 
class ITrigo // pure virtual class
{
public:
    virtual void CompAngle(Data input, double& angle1, double& angle2) = 0;
};
 
class SinCsc : public ITrigo // worker class, realizing ITrigo
{
public: 
    void CompAngle(Data input, double& angle1, double& angle2)
    {
        angle1 = input.m_Opposite / input.m_Hypotenuse;
        angle2 = input.m_Hypotenuse / input.m_Opposite;
    }
};
 
class Trigo
{
private:
    Data m_Input;
    ITrigo* m_pObject;
 
public:
    void SetAttributes (Data input)
    {
        m_Input = input;
    }
    void SetTrigoObject (ITrigo* pObject)
    {
        m_pObject = pObject;
    }
    void Compute (double& angle1, double& angle2)
    {
        m_pObject->CompAngle(m_Input, angle1, angle2);
    }
 
};
 
int main(){
 
    Data d;
    Trigo t;
 
    d.m_Opposite = 4.0; d.m_Adjacent = 3.0, d.m_Hypotenuse = 5.0;
 
    t.SetAttributes(d);
 
    ITrigo *pObj = new SinCsc();   
    t.SetTrigoObject(pObj);
 
    double sine, cosecant;
    t.Compute(sine, cosecant);
 
    cout << "Sine: " << sine << endl;
    cout << "Cosecant: " << cosecant << endl;
 
    delete pObj;
 
 
 
 
    return 0;
}

Comments