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(roots));
- float temp=sqrt(delta);
- (*roots)->r1=-0.5*(equ->b+temp)/equ->a;
- (*roots)->r2=-0.5*(equ->b-temp)/equ->a;
- // (*root)->r1+(*root)->r2=equ->b/equ->a;
- // (*root)->r1*(*root)->r2=(1-4*equ->a*equ->c)/4*equ->a*equ->a;
- // (*root)->r1>(*root)->r2;
- return S_OK;
- }
- else
- {
- this->Error(::SysAllocString(L"这个方程莫有根"));
- return S_FALSE;
- }
- }