标题:C++菜鸟请教大家如何实现求积?
只看楼主
ie5054
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-8-13
结帖率:100%
已结贴  问题点数:20 回复次数:16 
C++菜鸟请教大家如何实现求积?
最近学习用C++编DLL,以供大智慧调用,碰到的问题如下。


__declspec(dllexport) int WINAPI MYMAVOL(const CALCINFO* pCalcInfo)
{
float fTotal;
int nPeriod,i,j;
if (pCalcInfo->m_pfParam1==NULL ||       //参数1有效?
  pCalcInfo->m_nParam1Start>=0 ||       //参数1为常数?
  pCalcInfo->m_pfParam2)          //仅有一个参数?
    return -1;
nPeriod = (int)*pCalcInfo->m_pfParam1;      //参数1
if (nPeriod < 2)             //参数1合法?
    return -1;
for(i=nPeriod-1;i<pCalcInfo->m_nNumData;i++)  //计算nPeriod周期的均线,数据
{                //从nPeriod-1开始有效
  fTotal = 0.0f;
  for(j=0;j<nPeriod;j++)          //累加
   fTotal += pCalcInfo->m_pStkData[i-j].m_fVolume;
  pCalcInfo->m_pResultBuf[i] = fTotal/nPeriod;   //平均
}
return nPeriod-1;
}







====================其中这一段
  fTotal = 0.0f;
  for(j=0;j<nPeriod;j++)          //累加
   fTotal += pCalcInfo->m_pStkData[i-j].m_fVolume;
  pCalcInfo->m_pResultBuf[i] = fTotal/nPeriod;   //平均
=========================================


这是求和的程序段。。。。。我想变成求积的公式段。于是就做了如下修改。
  fTotal = 0.0f;
  for(j=0;j<nPeriod;j++)          //累加
   fTotal *= pCalcInfo->m_pStkData[i-j].m_fVolume;
  pCalcInfo->m_pResultBuf[i] = fTotal/nPeriod;   //平均

但是结果不对。。我怀疑是fTotal = 0.0f;这个变量付值的的问题。
因为求和可以是累加0也没关系。但是求积,累乘0就麻烦了。。

有高手指点一下吗。我应该怎么改,才能实现求积?
搜索更多相关主题的帖子: 大智慧 
2010-08-13 14:43
ie5054
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-8-13
得分:0 
呵呵。希望路过的朋友指点一二。好让我堤湖灌顶
2010-08-13 14:44
书中叶
Rank: 2
来 自:河北省唐山市
等 级:论坛游民
帖 子:38
专家分:25
注 册:2010-8-5
得分:4 
……不敢说,让高手看看吧,我也想学一下

科学家是要把可能的事变为可能,小说家是要把不可能的事变为可能
2010-08-13 16:28
ie5054
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-8-13
得分:0 
呵呵。一起学习吧。
2010-08-13 17:52
rainbow1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:277
专家分:839
注 册:2010-5-19
得分:4 
可以先令fTotal = 1.0f;试一下。累积的程序没有错,还要保证其他要累乘的数值不为〇。
2010-08-13 17:59
ie5054
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-8-13
得分:0 
谢谢楼上的同志。我这 就试一下
2010-08-13 18:21
ie5054
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-8-13
得分:0 
rainbow1,我试过了,没用。呵呵。谢谢指点。
再等会的朋友出现
2010-08-13 18:32
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:4 
没仔细看你的代码,不过数值积分有通用解法。
比如矩形法,梯形法,辛普森法,高斯法什么的。如果求的函数本身比较特殊,还可以根据情况选择特殊的解法。
辛普森法好像比较折衷,一般应用印象里相对好一些。
2010-08-13 23:04
ie5054
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2010-8-13
得分:0 
楼上的朋友可能想的太深奥了。不是求积分。
大智慧不知道你有研究吗?
比如有十天。 分别是: 1天 2天 3天 4天 5天 6天 7天 8天 9天 10天
 对应有每天的收盘价: 3元 2元 4元 5元 3元 4元 6元 3元 2元 5元

我现在需要的就是把这十天的收盘价全部相乘,
按理来说利用循环很容易实现。
积=1;
for(i=1,i<11,i++)
积*=收盘价[i];


呵呵。不小的为什么这样子会不行。想不通
2010-08-14 10:01
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:0 
哦,求乘积哈~
我也不晓得你那个为什么不行。
2010-08-14 12:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-315602-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.132421 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved