Goidpoint

 此次项目引用了网上的代码,代码地址:http://www.cnblogs.com/zw2013040101034/p/537030github

github地址:https://github.com/FZGgithub/cangku/blob/master/goldpoint.cpp

黄金点游戏是一个数字小游戏,其游戏规则是:

      N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动。

  该程序用C++写,主要功能是算出G点,代码如下:

  ave = sum / num;
  G = ave*0.618;

  然后就是比较哪个数离G点最近:

for (j = 1; j <= M; j++)
{
S1[j] = abs(S[j] - G);
}
max = min = S1[1];
for (j = 1; j <= M; j++)
{
if (S1[j] >= max)
max = S1[j];
else if (S1[j] < min)
min = S1[j];
}
for (j = 1; j <= M; j++)
{
if (S1[j] == max)
S2[j] = -2;
else if (S1[j] == min)
S2[j] = M;
else S2[j] = 0;

}

在这个程序中,我们除了将代码内的一些提示语改为中文外,还发现了原代码的一个错误。源代码在计算总分数的时候将该循环放在了整个外循环内,导致每轮游戏都会计算一次总分数,并打印,我们在for循环之外重新创建了一个循环,在游戏结束后统计每轮游戏的分数并求和打印。

通过这次的项目,加深了我对循环的理解,同时也发现了自己以往的一些误区。相信在以后的学习中再遇到循环的问题可以更好的解决。

posted @ 2017-10-26 22:36  工程怪兽  阅读(312)  评论(0编辑  收藏  举报