• 2020寒假学习(3)


    Scala语言实验

    1. 计算级数
      请用脚本的方式编程计算并输出下列级数的前 n 项之和 Sn,直到 Sn 刚好大于或等于 q
    为止,其中 q 为大于 0 的整数,其值通过键盘输入。
    例 如 , 若 q 的 值 为 50.0 , 则 输 出 应 为 : Sn=50.416695 。 请 将 源 文 件 保 存 为
    exercise2-1.scala,在REPL模式下测试运行,测试样例:q=1时,Sn=2;q=30时,Sn=30.891459;
    q=50 时,Sn=50.416695。
    import scala.io.StdIn
    object test_demo
     {
        def main(args: Array[String])
        {
          while(2>1){
            var Sn=0.0
            println("请输入n")
            var n:Long=StdIn.readLine().toLong
            var i=1.0
            while(Sn<n)
            {
              Sn=Sn+(i+1)/i
              i=i+1
            }
            println("计算级数为:",Sn)
          }
          }
       }
    

      运行结果:

    2. 模拟图形绘制
    case class Point(var x:Double,var y:Double)extends Drawable
      {
           def shift(deltaX:Double,deltaY:Double)
           {
                x+=deltaX
                y+=deltaY
               }
      }
     trait Drawable
    {
      def draw(){println(this.toString)}
    }
    abstract class Shape(var location:Point)//location是Shape的一个可变字段
    {
      def moveTo(newLocation:Point)//默认实现,只是修改位置
      {
        location=newLocation
      }
      def zoom(scale:Double)
    }
    class Line(beginPoint:Point,var endPoint:Point)extends Shape(beginPoint)with Drawable
    {
      override def draw()
      {
        println(s"Line:(${location.x},${location.y})--(${endPoint.x},${endPoint.y})")//按规定格式重载click
      }
    
      override def moveTo(newLocation:Point)
      {
        endPoint.shift(newLocation.x-location.x,newLocation.y-location.y)//直线移动时,先移动另外一个端点
        location=newLocation //移动位置
      }
    
      override def zoom(scale:Double)
      {
        val midPoint=Point((endPoint.x+location.x)/2,(endPoint.y+location.y)/2) //求出中点,并按中点进行缩放
        location.x=midPoint.x+scale*(location.x-midPoint.x)
        location.y=midPoint.y+scale*(location.y-midPoint.y)
        endPoint.x=midPoint.x+scale*(endPoint.x-midPoint.x)
        endPoint.y=midPoint.y+scale*(endPoint.y-midPoint.y)
      }
    }
    
    class Circle(center:Point,var radius:Double)extends Shape(center)with Drawable
    {
      override def draw() //按规定重载click
      {
        println(s"Circle center:(${location.x},${location.y}),R=$radius")
      }
    
      override def zoom(scale:Double)
      {
        radius=radius*scale //对圆的缩放只用修改半径
      }
    }
    
    object MyDraw
    {
      def main(args:Array[String])
      {
        val p=Point(10,30)
        p.draw()
    
        val line1=new Line(Point(0,0),Point(20,20))
        line1.draw()
        line1.moveTo(Point(5,5))
        line1.draw()
        line1.zoom(2)
        line1.draw()
    
        val cir=new Circle(Point(10,10),5)
        cir.draw()
        cir.moveTo(Point(30,20))
        cir.draw()
        cir.zoom(0.5)
        cir.draw()
      }
    
    }
    

      运行结果:

    3. 统计学生成绩
    import scala.collection.mutable.ArrayBuffer
    object Operate{
      def main(args:Array[String]){
        var students:ArrayBuffer[Student] = new ArrayBuffer[Student]()
        students.append(new Student(301610, "male", 80, 64, 78))
        students.append(new Student(301611, "female", 65, 87, 58))
        students.append(new Student(301612, "female", 44, 71, 77))
        students.append(new Student(301613, "female", 66, 71, 91))
        students.append(new Student(301614, "female", 70, 71, 100))
        students.append(new Student(301615, "male", 72, 77, 72))
        students.append(new Student(301616, "female", 73, 81, 75))
        students.append(new Student(301617, "female", 69, 77, 75))
        students.append(new Student(301618, "male", 73, 61, 65))
        students.append(new Student(301619, "male", 74, 69, 68))
        students.append(new Student(301620, "male", 76, 62, 76))
        students.append(new Student(301621, "male", 73, 69, 91))
        students.append(new Student(301622, "male", 55, 69, 61))
        students.append(new Student(301623, "male", 50, 58, 75))
        students.append(new Student(301624, "female", 63, 83, 93))
        students.append(new Student(301625, "male", 72, 54, 100))
        students.append(new Student(301626, "male", 76, 66, 73))
        students.append(new Student(301627, "male", 82, 87, 79))
        students.append(new Student(301628, "female", 62, 80, 54))
        students.append(new Student(301629, "male", 89, 77, 72))
        println(students.length)
        println(students(1).toString)
    
        getData(students)
        getDataMale(students)
        getDataFeMale(students)
      }
    
      def getData(value: ArrayBuffer[Student]){
        var Mathaverage:Double=0
        var MathSum:Double = 0
        var MathMin:Double = value(0).Math
        var MathMax:Double = 0
    
        var Englishaverage:Double=0
        var EnglishSum:Double = 0
        var EnglishMin:Double = value(0).English
        var EnglishMax:Double = 0
    
        var Physicsaverage:Double=0
        var PhysicsSum:Double = 0
        var PhysicsMin:Double = value(0).Physics
        var PhysicsMax:Double = 0
    
        var number = value.length
        for (i <- 0 until value.length){
          MathSum = value(i).Math+MathSum
          EnglishSum = value(i).English+EnglishSum
          PhysicsSum = value(i).Physics+PhysicsSum
    
          if(value(i).Math>MathMax){
            MathMax=value(i).Math
          }
          if(value(i).English>EnglishMax){
            EnglishMax=value(i).English
          }
          if(value(i).Physics>PhysicsMax){
            PhysicsMax=value(i).Physics
          }
          if(value(i).Math<MathMin){
            MathMin=value(i).Math
          }
          if(value(i).English<EnglishMin){
            EnglishMin=value(i).English
          }
          if(value(i).Physics<PhysicsMin){
            PhysicsMin=value(i).Physics
          }
        }
    
        Mathaverage=MathSum/number
        Englishaverage=EnglishSum/number
        Physicsaverage=PhysicsSum/number
        println("course"+"	"+"average"+"		"+"min"+"		"+"max"+"	")
        println("Math   : "+Mathaverage+"		"+MathMin+"	"+MathMax)
        println("English: "+Englishaverage+"		"+EnglishMin+"	"+EnglishMax)
        println("Physics: "+Physicsaverage+"		"+PhysicsMin+"	"+PhysicsMax)
      }
    
      def getDataMale(value: ArrayBuffer[Student]){
        var Mathaverage: Double = 0
        var MathSum: Double = 0
        var MathMin: Double = value(0).Math
        var MathMax: Double = 0
    
        var Englishaverage: Double = 0
        var EnglishSum: Double = 0
        var EnglishMin: Double = value(0).English
        var EnglishMax: Double = 0
    
        var Physicsaverage: Double = 0
        var PhysicsSum: Double = 0
        var PhysicsMin: Double = value(0).Physics
        var PhysicsMax: Double = 0
    
        var number = 0
    
        for (i <- 0 until value.length) {
          if (value(i).gender.equals("male")) {
            number = number + 1
    
            MathSum = value(i).Math + MathSum
            EnglishSum = value(i).English + EnglishSum
            PhysicsSum = value(i).Physics + PhysicsSum
    
            if (value(i).Math > MathMax) {
              MathMax = value(i).Math
            }
            if (value(i).English > EnglishMax) {
              EnglishMax = value(i).English
            }
            if (value(i).Physics > PhysicsMax) {
              PhysicsMax = value(i).Physics
            }
            if (value(i).Math < MathMin) {
              MathMin = value(i).Math
            }
            if (value(i).English < EnglishMin) {
              EnglishMin = value(i).English
            }
            if (value(i).Physics < PhysicsMin) {
              PhysicsMin = value(i).Physics
            }
          }
    
        }
    
        Mathaverage=MathSum/number
        Englishaverage=EnglishSum/number
        Physicsaverage=PhysicsSum/number
        println("course"+"	"+"average"+"		"+"min"+"		"+"max"+"	"+"(Male)")
        Mathaverage=Mathaverage.toInt
        Englishaverage=Englishaverage.toInt
        Physicsaverage=Physicsaverage.toInt
        println("Math   : "+Mathaverage+"		"+MathMin+"	"+MathMax)
        println("English: "+Englishaverage+"		"+EnglishMin+"	"+EnglishMax)
        println("Physics: "+Physicsaverage+"		"+PhysicsMin+"	"+PhysicsMax)
      }
    
      def getDataFeMale(value: ArrayBuffer[Student]){
        var Mathaverage:Double=0
        var MathSum:Double = 0
        var MathMin:Double = value(1).Math
        var MathMax:Double = 0
    
        var Englishaverage:Double=0
        var EnglishSum:Double = 0
        var EnglishMin:Double = value(1).English
        var EnglishMax:Double = 0
    
        var Physicsaverage:Double=0
        var PhysicsSum:Double = 0
        var PhysicsMin:Double = value(1).Physics
        var PhysicsMax:Double = 0
    
        var number = 0
    
        for (i <- 0 until value.length){
          if(value(i).gender.equals("female")){
            number=number+1
    
            MathSum = value(i).Math+MathSum
            EnglishSum = value(i).English+EnglishSum
            PhysicsSum = value(i).Physics+PhysicsSum
    
            if(value(i).Math>MathMax){
              MathMax=value(i).Math
            }
            if(value(i).English>EnglishMax){
              EnglishMax=value(i).English
            }
            if(value(i).Physics>PhysicsMax){
              PhysicsMax=value(i).Physics
            }
            if(value(i).Math<MathMin){
              MathMin=value(i).Math
            }
            if(value(i).English<EnglishMin){
              EnglishMin=value(i).English
            }
            if(value(i).Physics<PhysicsMin){
              PhysicsMin=value(i).Physics
            }
          }
        }
    
        Mathaverage=MathSum/number
        Englishaverage=EnglishSum/number
        Physicsaverage=PhysicsSum/number
        println("course"+"	"+"average"+"		"+"min"+"		"+"max"+"	"+"(FeMale)")
        Mathaverage=Mathaverage.toInt
        Englishaverage=Englishaverage.toInt
        Physicsaverage=Physicsaverage.toInt
        println("Math   : "+Mathaverage+"		"+MathMin+"	"+MathMax)
        println("English: "+Englishaverage+"		"+EnglishMin+"	"+EnglishMax)
        println("Physics: "+Physicsaverage+"		"+PhysicsMin+"	"+PhysicsMax)
      }
    }
    class Student(id1:Int,gender1:String,Math1:Double,English1:Double,Physics1:Double){
      var id:Int = id1
      var gender:String = gender1
      var Math:Double = Math1
      var English:Double = English1
      var Physics:Double = Physics1
    
      override def toString = s"Student($id, $gender, $Math, $English, $Physics)"
    }
    

      运行结果:

  • 相关阅读:
    git add . 的时候遇到warning: LF will be replaced by CRLF inXXX 解决办法
    用Merge存储引擎中间件实现MySQL分表
    隐型马尔科夫模型(HMM) 简介
    隐型马尔科夫模型(HMM)向前算法实例讲解(暴力求解+代码实现)---盒子模型
    数据输入——生成你需要的echart图(世界地图,气泡图)
    数据输入——生成你需要的echart图(堆积柱状图、扇形图、嵌套环形图)
    jython实现java运行python代码
    django第四课 标签的用法(if/else、for、ifequal、过滤器、注释等)
    django第三课 模版
    paddlepaddle使用(一)
  • 原文地址:https://www.cnblogs.com/janeszj/p/12248645.html
Copyright © 2020-2023  润新知