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(roots));
  27. float temp=sqrt(delta);
  28. (*roots)->r1=-0.5*(equ->b+temp)/equ->a;
  29. (*roots)->r2=-0.5*(equ->b-temp)/equ->a;
  30. // (*root)->r1+(*root)->r2=equ->b/equ->a;
  31. // (*root)->r1*(*root)->r2=(1-4*equ->a*equ->c)/4*equ->a*equ->a;
  32. // (*root)->r1>(*root)->r2;
  33. return S_OK;
  34. }
  35. else
  36. {
  37. this->Error(::SysAllocString(L"这个方程莫有根"));
  38. return S_FALSE;
  39. }
  40. }