01王雪莲-17董琪-实训一

一:码云地址:https://gitee.com/ddongqi/sx1

二:实训照片

 

      

三:解题思路

 

1:题目:黄金点

阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫“黄金点”的游戏:

N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。记录每一次游戏每名同学的数字和分数。

2:思路

  • 由控制台输入玩家个数和游戏局数
  • 输入的数值不符题目,则显示重新输入,把输入的数放到sum,求出G
  • 用绝对值求出与G最近和最远,最靠近G的同学得到N分,离G最远的同学得到-2分,其他同学得0分
  • 求出总分
  • 最大值最小值赋值输出胜利与失败

 

import java.util.Scanner;
    public class Main {
     public static void main(String[] args){
    
//输入玩家个数 游戏局数
        System.out.println("请输入大于10的游戏人数:");
        Scanner reader=new Scanner(System.in);  
        int N=reader.nextInt();
        System.out.println("游戏局数:");
        int b=reader.nextInt();
        Scanner scanner=new Scanner(System.in);
        double sum;
        double max,min;
        int maxzf=0;
        int minzf=0;
        int []zf=new int[100];   
        double []v=new double[100];
        int [][]grade=new int[100][100];
 
        for(int j=1;j<=b;j++)
        { 
            sum=0.0;
            max=0.0;
            System.out.println("第"+j+"轮游戏");
            for(int i=1;i<=N;i++)
            {
                System.out.print("请玩家"+i+"输入数字:");
                double num=scanner.nextDouble();//玩家给出数字
                while(num>=100||num<0){
                System.out.println("请重新输入");
                 num=scanner.nextDouble();
                }
                
                v[i]=num;
                sum=sum+num;//所有玩家的总分
            }
            double G=(sum/N)*0.618;//计算G值
            System.out.println("G="+G);
            min=Math.abs(v[1]-G);//MATH.ABS绝对值
 //跟G比较,最近最远
            for(int I=1;I<=N;I++)                         
            {
                if(Math.abs(v[I]-G)>=max)
                {
                    max=Math.abs(v[I]-G);
                }
            
                if(Math.abs(v[I]-G)<=min)
                {
                    min=Math.abs(v[I]-G);    
                }
                    
            }
//将得分放到适当的位置            
            for(int m=1;m<=N;m++)
            {
                if(Math.abs(v[m]-G)==max)
                {
                    grade[j][m]=-2;
                }
                else if(Math.abs(v[m]-G)==min)
                {
                    grade[j][m]=N;
                }
               else 
                {
                    grade[j][m]=0;
                }
                 System.out.println("第"+m+"名游戏玩家所得分数为:"+grade[j][m]);
            }
        }
        
        
        
//求总分    
        
        for(int p=1;p<=N;p++)
        {
            for(int q=1;q<=b;q++)
            {
                zf[p]=grade[q][p]+zf[p];
            }
            System.out.println("第"+p+"名玩家所得总分为:"+zf[p]);
        }
        
//求最大值最小值    
        for(int s=1;s<=N;s++)
        {
            if(zf[s]>=maxzf)
            {
                maxzf=zf[s];
            }
            if(zf[s]<=minzf)
            {
                minzf=zf[s];
            }
        }
//最大值最小值赋值输出        
        for(int t=1;t<=N;t++)
        {
            if(zf[t]==maxzf)
            {
                System.out.println("玩家"+t+"胜利!");
            }
            if(zf[t]==minzf)
            {
                System.out.println("玩家"+t+"失败!");
            }
        }
        
    }
}

 

 

四:运行结果

 

 

五:小结感受

           经过两大节课的实训时间,两个人把实训要求做出自己想要的成果。在讨论和摩擦中做出的成果更加令人深刻。任何人都不是完美的,每个人都有进步的空间,每个人的代码风格也是不同的,有着不同的意见但是在过程中还是很愉快的。有了合作伙伴会提供与自己不同的思路,补充自己的不足点,比如:马虎大意丢字母,方法记错,知识点不牢固等等。而队友的优秀学习能力在过程中有着很重要的地位。通过两个人的合作巩固和加深了知识点,学会在给予别人意见时吸取他人的建议补充到自己的身上。

           希望在之后的合作中两个人共同进步,迸发出不一样的火花,达到1+1>2!

 

 

六:评价伙伴

姓名 风格 团队贡献 优点 缺点 希望ta提高的地方 创作中的口头禅
王雪莲 雷厉风行 完善内容,查漏补缺 吃苦耐劳 不理智 希望她能理智一点 我就不信不行
董琪 大胆创新,简洁明了 收集材料,提供意见 沉着冷静 马虎 处理事情要在细心一点 没事,我们再来一次

 

 

 

 

 

 

posted @ 2018-12-13 14:42  董琪  阅读(160)  评论(0编辑  收藏  举报