有会c++的童鞋没,小弟有个小问题咨询一下。
- luntanLV.连长
- 2019/12/25 16:55:51
这段语句是要做一个股票软件的mfc dll
具体内容是画一个函数图像
软件头文件架构已经有了 在下楼 不知道我这个架构符合不 有能看懂的不?
另外这里头有些代码错误 能否修改一下?
希望好心人能帮这个忙。错误语句是几个数学函数
#include "stdafx.h"
#include "PluginTCalcFunc.h"
BOOL RegisterTdxFunc(PluginTCalcFuncInfo ** pFun)
{
return 0;
}
#include "stdafx.h"
double Weierstrass(double*Vect, int N) {
static const double a = 0.5, b = 3;
static int kmax = 20;
int i, j;
double dat = 0, result = 0;
for (i = 0; i <= kmax; i++) {
for (j = 0; j<N; j++)
result += pow(a, i)*cos(2 * pi*pow(b, i)*(Vect[j] + 0.5));
dat += pow(a, i)*cos(2 * pi*pow(b, i)*0.5);
}
result -= N*dat;
return result;
}
// Fast version (N = 100)
double weierstrass_Fast(double*Vect) {
static const double alist[] = {
1.0000e+0, 5.0000e-1,2.5000e-1,1.2500e-1,6.2500e-2,3.1250e-2,1.5625e-2,
7.8125e-3, 3.9063e-3,1.9531e-3,9.7656e-4,4.8828e-4,2.4414e-4,1.2207e-4,
6.1035e-5, 3.0518e-5,1.5259e-5,7.6294e-6,3.8147e-6,1.9073e-6,9.5367e-7
};
static const double blist[] = {
1.0000e+0,3.0000e+0,9.0000e+0,2.7000e+1,8.1000e+1,2.4300e+2,7.2900e+2,
2.1870e+3,6.5610e+3,1.9683e+4,5.9049e+4,1.7715e+5,5.3144e+5,1.5943e+6,
4.7830e+6,1.4349e+7,4.3047e+7,1.2914e+8,3.8742e+8,1.1623e+8,3.4868e+9
};
static const int kmax = 20;
int i, j;
double dat = 0, result = 0, twopi = 2 * pi;
for (i = 0; i <= kmax; i++) {
for (j = 0; j<100; j++)
result += alist * cos(twopi*blist * (Vect[j] + 0.5));
dat += alist * cos(pi*blist);
}
result -= 100 * dat;
return result;
}
- llhnllhn
- 2019/12/25 18:37:24
- gbird
- 2019/12/25 20:37:13
股票软件提供了PluginTCalcFunc.h头文件。
包括注册DLL函数基本信息。注册函数名称为RegisterTdxFunc。
下面是架构
#ifndef __PLUGIN_TCALC_FUNC
#define __PLUGIN_TCALC_FUNC
#pragma pack(push,1)
//函数(数据个数,输出,输入a,输入b,输入c)
typedef void(*pPluginFUNC)(int,float*,float*,float*,float*);
typedef struct tagPluginTCalcFuncInfo
{
unsigned shortnFuncMark;//函数编号
pPluginFUNCpCallFunc;//函数地址
}PluginTCalcFuncInfo;
typedef BOOL(*pRegisterPluginFUNC)(PluginTCalcFuncInfo**);
//RegisterTdxFunc函数为注册函数,用户的函数全部都放入PluginTCalcFuncInfo结构的全局数组g_CalcFuncSets中。
typedef BOOL(*pRegisterPluginFUNC)(PluginTCalcFuncInfo**);
//=======================================
extern"C"
{
//__cplusplus
__declspec(dllexport)BOOL RegisterTdxFunc(PluginTCalcFuncInfo**pFun);
}
#pragma pack(pop)
#endif
自编实现细节说明
PluginTCalcFunc.h头文件中PluginTCalcFuncInfo结构用来存放用户自己的函数pCallFunc和函数唯一标记nFuncMark;pCallFunc是typedef void(*pPluginFUNC)( intDataLen,float* pfOUT,float* pfINa,float* pfINb,float* pfINc)类型指针;函数参数分别是(数据个数,输出,输入a,输入b,输入c),参数的计算是基于长度为DataLen的float类型数组。
RegisterTdxFunc函数为注册函数,用户的函数全部都放入PluginTCalcFuncInfo结构的全局数组g_CalcFuncSets中。
- 春天花会开
- 2019/12/25 23:16:57
没有math.h头文件

论坛板块