MyEquation.cpp
上传用户:weisheen
上传日期:2022-07-09
资源大小:19390k
文件大小:1k
源码类别:
ActiveX/DCOM/ATL
开发平台:
Visual C++
- // MyEquation.cpp : Implementation of CMyEquation
- #include "stdafx.h"
- #include "EquationDemo.h"
- #include "MyEquation.h"
- #include <cmath>
- /////////////////////////////////////////////////////////////////////////////
- // CMyEquation
- STDMETHODIMP CMyEquation::InterfaceSupportsErrorInfo(REFIID riid)
- {
- static const IID* arr[] =
- {
- &IID_IMyEquation
- };
- for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
- {
- if (InlineIsEqualGUID(*arr[i],riid))
- return S_OK;
- }
- return S_FALSE;
- }
- STDMETHODIMP CMyEquation::solve(Equation* equ,Root** roots)
- {
- float delta=(equ->b)*(equ->b)-4*equ->a*equ->c;
- if(delta>=0)
- {
- *roots=(Root*)::CoTaskMemAlloc(sizeof(Root));
- float temp1=sqrt(delta);
- (*roots)->r1=0.5*(0-equ->b+temp1)/equ->a;
- (*roots)->r2=0.5*(0-equ->b-temp1)/equ->a;
- return S_OK;
- }
- else
- {
- this->Error(::SysAllocString(L"no root"));
- return S_FALSE;
- }
- }