C++ 以费波纳茨数列为权重的加权均值计算方法 wMA
#pragma once #include <iostream> using namespace std; template <typename T> double *wMA(T &tArray, int iWMALen) // 应用模版数据类型 typename T 引用外部数组 tArray
{
int iArrayLen = sizeof(tArray) / sizeof(tArray[]); // 计算传入数组长度 = 总数组字节大小 / 首元素字节大小
cout << "Length of import array is: " << iArrayLen << endl;
cout << "Import array is:";
for(int i = ; i < iArrayLen; i++)
{
if(i == )
cout << "[" << tArray[i] << " ";
else if(i == iArrayLen - )
cout << tArray[i] << "]" << endl;
else
cout << tArray[i] << " ";
}
if(iArrayLen >= iWMALen && iWMALen > ) // 计算前提,数组长度不能小于均值要计算的天数
{
int *pWMAW = new int[iWMALen]; // 把费波纳茨数列个值做权重
int iSumW = ; // 费波纳茨数列的算术和
switch(iWMALen)
{
case :
{
cout << "Creating fabonacci numbers:" << endl;
pWMAW[] = ;
cout << "[0] = " << pWMAW[] << endl;
iSumW = pWMAW[];
break;
}
case :
{
cout << "Creating fabonacci numbers:" << endl;
pWMAW[] = ;
pWMAW[] = ;
cout << "[0] = " << pWMAW[] << endl;
cout << "[1] = " << pWMAW[] << endl;
iSumW = pWMAW[] + pWMAW[];
break;
}
default:
{
cout << "Creating fabonacci numbers:" << endl;
pWMAW[] = ;
pWMAW[] = ;
cout << "[0] = " << pWMAW[] << endl;
cout << "[1] = " << pWMAW[] << endl;
iSumW = pWMAW[] + pWMAW[];
for(int i = ; i < iWMALen; i++)
{
pWMAW[i] = pWMAW[i - ] + pWMAW[i - ]; // 费波纳茨通项公式算法
cout << "[" << i << "] = " << pWMAW[i] << endl;
iSumW += pWMAW[i];
}
break;
}
}
cout << "The sum of those fabonacci numbers is: " << iSumW << endl;
int n = iWMALen; // 固定均值计算天数,因为后面这个 iWMALen 会逐步增加变动
double *pWMAV = new double[iArrayLen]; // 用于保存均值
cout << "The wMA values are:" << endl;
while(iWMALen <= iArrayLen)
{
double iSumV = ;
for(int i = iWMALen - n, j = ; i < iWMALen; i++, j++)
{
iSumV += tArray[i] * pWMAW[j];
}
pWMAV[iWMALen - ] = iSumV / iSumW; // 算法 wMA = (数组个值 * 费波纳茨数列个值权重)的前 n 项和 / 费波纳茨数列加和
cout << "wMA[" << iWMALen - << "] = " << pWMAV[iWMALen - ] << endl;
iWMALen++;
}
delete(pWMAW); // 该指针作用到此为止,释放指针
cout << "Remeber to delete the return pointer of wMA(...)!\n" << endl; // 函数返回指针,提示后面删除堆中新建指针
return pWMAV;
}
else
{
cout << "Error!\n" << endl;
return NULL;
}
} int main()
{
int array[] = {, , , , , , , };
double *p = wMA(array, );
delete(p);
cin.get();
return ;
}
C++ 以费波纳茨数列为权重的加权均值计算方法 wMA的更多相关文章
- CodeForces 450B Jzzhu and Sequences 费波纳茨数列+找规律+负数MOD
题目:Click here 题意:给定数列满足求f(n)mod(1e9+7). 分析:规律题,找规律,特别注意负数取mod. #include <iostream> #include &l ...
- hdu 5459 Jesus Is Here (费波纳茨递推)
Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 65535/102400 K (Java/Others)Total Submission ...
- 分巧克力【来源:CSDN线上编程挑战赛】——递归,费波那奇数列,迭代
/*====================================================================== 儿童节快到了,班长想要给班上的每个同学给一个巧克力, ...
- C语言 递归 汉诺塔问题 最大公约数问题
函数不能嵌套定义,但能嵌套调用(在调用一个函数的过程中再调用另一个函数) 函数间接或直接调用自己,称为递归调用 汉诺塔问题 思想:简化为较为简单的问题 n=2 较为复杂的问题,采用数学归纳方法分析 ...
- 剑指Offer——滴滴笔试题+知识点总结
剑指Offer--滴滴笔试题+知识点总结 情景回顾 时间:2016.9.18 15:00-17:00 地点:山东省网络环境智能计算技术重点实验室 事件:滴滴笔试 总体来说,滴滴笔试内容体量不算多, ...
- java程序设计课程实验报告1
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:陈都 学号:20135328 成绩: 指导 ...
- golang之数组
1.数组:同一种数据类型的固定长度的序列. 2.数组定义:var a [len]int,例如:var a [5]int 3.长度是数组类型的一部分,因此,var a[5] int 和 var a[10 ...
- Javascript函数式编程要掌握的知识点讲解
一:理解call和apply 及arguments.callee ECMAScript3给Function的原型定义了两个方法,他们是Function.prototype.call 和 Functio ...
- [No000019A]【波浪理论精典教学课程】
波浪理论的产生和发展 拉尔夫·纳尔逊·艾略特(Ralph Nelson Elliott ),是波浪理论的创始人.1871年7月28日出生在美国密苏里州堪萨斯市的玛丽斯维利镇Marysville ...
随机推荐
- 分布式学习材料Distributed System Prerequisite List
接下的内容按几个大类来列:1. 文件系统a. GFS – The Google File Systemb. HDFS1) The Hadoop Distributed File System2) Th ...
- android 之 Toast通知的使用
1.默认效果: 代码: Toast.makeText(getApplicationContext(), "默认Toast样式", Toast.LENGTH_SHORT ...
- 管理系统UI: System Bar 详解
Google原文: http://developer.android.com/training/system-ui/index.html 管理系统UI之一:淡化System Bar(Dimming t ...
- 北京Java培训机构哪个好
又是一年暑期生活的来临,对于即将走出校园的实习生而言,培训潮与就业潮不约而至,培训行业的就业课程开班也如火如荼地进行着. 一直以来,计算机专业的毕业生都会作为一股庞大的生力军涌入社会各个岗位.就目前的 ...
- Cygwin使用方法
对于 UNIX 本身,也有各种称呼.IBM® 大型机用户说各种带字母 “z” 的行话,比如 IBM z/OS® 和 System z9 Virtual Machine (z/VM):嵌套系统开发人员使 ...
- u Calculate e阶乘相加求和问题
问题: (n < 10)写个算法 回答: 方法一: #include<stdio.h> int main() { int f[10]={1,1,2,6,24,120,7 ...
- (转)CSS的Sprites技术
Css Sprites 技术逐渐流行,各大网站上都可以看到它的身影. 但从本质上,Css Sprites 只是 Css 技术的一个使用小窍门,初学者也能快速上手. Css Sprites 简单解释: ...
- 树上倍增求LCA(最近公共祖先)
前几天做faebdc学长出的模拟题,第三题最后要倍增来优化,在学长的讲解下,尝试的学习和编了一下倍增求LCA(我能说我其他方法也大会吗?..) 倍增求LCA: father[i][j]表示节点i往上跳 ...
- Hadoop中JAVA不经过Catch(Exception e)直接到finally或者退出原因
原来是被变成Throwable抛出来了!而Exception是Throwable的子类,所以无法捕捉到,只有捕捉Throwable的时候,才可以将错误信息打印!
- codevs1183泥泞的道路
题意:给定一张有向稠密图和通过每条边的时间和路程,问从1到n的路程/时间 最大为多少 正解:SPFA+二分答案 开始做的时候,想直接跑图论,后来发现好像不对(不然数据范围怎么这么小) 但是显然要用到图 ...