免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1711 | 回复: 0

用php实现评委评分器 [复制链接]

论坛徽章:
0
发表于 2015-07-16 13:59 |显示全部楼层
用选择排序法第一步从输入的数组中找到最高分和最低分,然后去掉一个最高分和一个最低分,得出选手的平均分。

[PHP]代码
  1. <?php
  2. function fairScore(&$arr)
  3. {  //选择排序法的第一步,这里只需要找到这个数组中的最大值和最小值即可,没必要对整个数组排序
  4.     $minVal = $arr[0];
  5.     $minIndex = 0;
  6.     $maxVal = $arr[0];
  7.     $maxIndex = 0;
  8.     $sum = 0;
  9.     for ($i=1;$i<count($arr);$i++)
  10.     {
  11.         if ($arr[$i]<$minVal)
  12.         {
  13.             $minVal = $arr[$i];;
  14.             $minIndex = $i;
  15.         }
  16.         if ($arr[$i]>$maxVal)
  17.         {
  18.             $maxVal = $arr[$i];
  19.             $maxIndex = $i;
  20.         }
  21.     }
  22.     echo "最高分是:".$maxVal."  最低分是:".$minVal."<br/>";
  23.     for ($i=0;$i<count($arr);$i++)
  24.     {
  25.         $sum +=$arr[$i];
  26.     }
  27.     $sum -=($minVal+$maxVal);
  28.     echo "一共有".count($arr)."个评委,去掉最高分和最低分后的平均分是".$sum/(count($arr)-2);
  29. }

  30. $score = @$_REQUEST['score'];//第一次打开页面时会因为没有输入数据,所以没法提交。这里加@是为了去除浏览器notice警告
  31. $aScore = explode(" ",$score);

  32. ?>

  33. <html>
  34. <head>
  35. <title>去掉最高分和最低分后的平均分</title>
  36. <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
  37. </head>

  38. <body>
  39. <form action ="fairScore.php" method="post">
  40. <span>请输入各个评委的打分,中间用空格隔开</span><br/><!--在输入时,每两个数之间只能有一个空格-->
  41. <input type="text" name="score" value="<?php echo $score;?>" /><br/>
  42. <input type="submit" value="提交计算平均成绩"/>
  43. </form>

  44. <?php
  45. fairScore($aScore);
  46. ?>
  47. </body>
  48. <html>
复制代码
1.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP