zoukankan      html  css  js  c++  java
  • 寒假学习记录第七天

         统计学生成绩
    学生的成绩清单格式如下所示,第一行为表头,各字段意思分别为学号、性别、课程名
    1、课程名 2 等,后面每一行代表一个学生的信息,各字段之间用空白符隔开
    Id
    gender Math English Physics
    301610 male 80 64 78
    301611 female 65 87 58
    ...
    给定任何一个如上格式的清单(不同清单里课程数量可能不一样),要求尽可能采用函
    数式编程,统计出各门课程的平均成绩,最低成绩,和最高成绩;另外还需按男女同学分开,
    分别统计各门课程的平均成绩,最低成绩,和最高成绩。
    package com.bjsxt.scala
    
    object Lesson_ClassAndObj {
      def main(args:Array[String])
           {
    
             var ii=1
                 do{
                  println("样例"+ii+":")
                 val inputFile=scala.io.Source.fromFile("test"+ii+".txt")
                  val originalData=inputFile.getLines.map{_.split{"\s+"}}.toList
                 val courseNames=originalData.head.drop(2)
                val allStudents=originalData.tail
               val courseNum=courseNames.length
               def statistc(lines:List[Array[String]])=
                 {
    
                 (for(i<- 2 to courseNum+1) yield
                          {
    
                                val temp =lines map
                                    {
                                          elem=>elem(i).toDouble
                                     }
                                  (temp.sum,temp.min,temp.max)
                            })map{case(total,min,max)=>(total/lines.length,min,max)} //最后一个map对for的结果进行修改,将总分转为平均分
                     }
    
                 def printResult(theresult:Seq[(Double,Double,Double)])
                   {
    
                       (courseNames zip theresult)foreach
                          {
                                case(course,result)=>
                                  println(f"${course+":"}%-10s${result._1}%5.2f${result._2}%8.2f${result._3}%8.2f")
                             }
                     }
    
                   val allResult=statistc(allStudents)
                   println("course    average    min    max")
                printResult(allResult)
    
                   val (maleLines,femaleLines)=allStudents partition
                     {
                       _(1)=="male"
                    }
    
                   val maleResult=statistc(maleLines)
                  println("course    average    min    max   (males)")
                  printResult(maleResult)
    
                  val femaleResult=statistc(femaleLines)
                 println("course    average    min    max   (females)")
                 printResult(femaleResult)
             ii=ii+1
              println()
            }while(ii!=3)
    
        }}
    

      

  • 相关阅读:
    第七章 防火墙和网络地址转换
    第六章 系统配置:DHCP和自动配置
    VLOOKUP函数的用法
    orcad 里误给元件添加了属性,如何删除
    文件夹无法删除提示找不到该项目怎么办
    网址
    OrCAD16.6中对比两份DSN文件的方法
    cadence allegro pcb模块设计复用
    Allegro Desgin Compare的用法与网表比较
    转:office 2016最新安装及激活教程(KMS)
  • 原文地址:https://www.cnblogs.com/xuange1/p/12271200.html
Copyright © 2011-2022 走看看