趣味编程 - 歌星大奖赛

系统 1666 0


* 问题说明 :

在歌星大奖赛中,有 10 个评委为参赛的选手打分,分数为 1~100 分。选手最后得分为:去掉一个最高分和一个最低分后其余 8 个分数的平均值。请编写一个程序实现。

 

* 思考题

题目条件不变,但考虑同时对评委评分进行裁判,即在 10 个评委中找出最公平 ( 即评分最接返平均分 ) 和最不公平 ( 即与平均分的差距最大 ) 的评委,程序应该怎样实现?

 

* 问题分析与算法设计 :

这个问题的算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。


    /* * Copyright (c) 2011 Trusted Software and Mobile Computing(TSMC)
 * All right reserved.
 *
 * Created on Mar 17, 2011 4:36:59 PM
 *
 *		http://jarg.iteye.com/
 *
 */
// Contributors:  Jarg Yee <yeshaoting@gmail.com>

import java.io.*;
import static java.lang.Math.abs;
import java.util.ArrayList;
import java.util.List;
import static java.lang.System.out;

/*
 * TODO 歌星大奖赛
 */
public class SingerCompetition
{
	private static final int[] VALUE = {90,91,93,94,90,99,97,92,91,95};
	private static final int NUM = VALUE.length;		// 评委人数
	
	/** local params */
	/** 最大分,最小分 */
	private static int max = 0,min = 100;
	/** 总分,平均分 */
	private static int sum = 0,avg = 0;
	/** 最小,最大差分 */
	private static int gap1 = 100,gap2 = 0;
	/* 最公平,最不公平评委(可能有多个人) */
	private static List fairList = new ArrayList(),unfairList = new ArrayList();

	/**
	 * TODO for debugging.
	 */
	public static void main(String[] args)
	{
		
		extremNUM();	/* 求极值分 */

		evaluation();	/* 评价评委 */
	}

	/* 求极值分 */
	public static void extremNUM()
	{
		for(int i=0; i<NUM; i++)
		{
			if(VALUE[i]>max)
				max = VALUE[i];
			if(VALUE[i]<min)
				min = VALUE[i];
			sum = sum + VALUE[i];		// 求总分
			out.println("Input NUMber " + i + ":" + VALUE[i]);
		}
		sum = sum - max - min;		// 去除最高分和最小分
		avg = sum/(NUM-2);
		out.println("Canceled max score:" + max);
		out.println("Canceled min score:" + min);
		out.println("Average score:" + avg);
	}

	/* 评价评委 */
	public static void evaluation()
	{
		for(int i=0; i<NUM; i++)
		{
			if(abs(VALUE[i] - avg)<=gap1)
			{
				if(abs(VALUE[i] - avg)!=gap1)
					fairList.clear();
				gap1 = abs(VALUE[i] - avg);
				fairList.add("" + i);
			}
			if(abs(VALUE[i] - avg)>=gap2)
			{
				if(abs(VALUE[i] - avg)!=gap2)
					unfairList.clear();
				gap2 = abs(VALUE[i] - avg);
				unfairList.add("" + i);
			}
		}
		out.print("Most fair judges:");
		for(int i=0;i<fairList.size();i++)
			out.print("\t" + fairList.get(i));
		out.println();

		out.print("Most unfair judges:");
		for(int i=0;i<unfairList.size();i++)
			out.print("\t" + unfairList.get(i));
		out.println();
	}

}

  
 


趣味编程 - 歌星大奖赛

 

趣味编程 - 歌星大奖赛


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论