MyEquation.cpp
上传用户:weisheen
上传日期:2022-07-09
资源大小:19390k
文件大小:1k
源码类别:

ActiveX/DCOM/ATL

开发平台:

Visual C++

  1. // MyEquation.cpp : Implementation of CMyEquation
  2. #include "stdafx.h"
  3. #include "EquationDemo.h"
  4. #include "MyEquation.h"
  5. #include <cmath>
  6. /////////////////////////////////////////////////////////////////////////////
  7. // CMyEquation
  8. STDMETHODIMP CMyEquation::InterfaceSupportsErrorInfo(REFIID riid)
  9. {
  10. static const IID* arr[] = 
  11. {
  12. &IID_IMyEquation
  13. };
  14. for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
  15. {
  16. if (InlineIsEqualGUID(*arr[i],riid))
  17. return S_OK;
  18. }
  19. return S_FALSE;
  20. }
  21. STDMETHODIMP CMyEquation::solve(Equation* equ,Root** roots)
  22. {
  23. float delta=(equ->b)*(equ->b)-4*equ->a*equ->c;
  24. if(delta>=0)
  25. {
  26. *roots=(Root*)::CoTaskMemAlloc(sizeof(Root));
  27. float temp1=sqrt(delta);
  28. (*roots)->r1=0.5*(0-equ->b+temp1)/equ->a;
  29. (*roots)->r2=0.5*(0-equ->b-temp1)/equ->a;
  30. return S_OK;
  31. }
  32. else
  33. {
  34. this->Error(::SysAllocString(L"no root"));
  35. return S_FALSE;
  36. }
  37. }