计算级数

 

请用脚本的方式编程计算并输出下列级数的前项之和 Sn,直到 Sn 刚好大于或等于 q 为止,其中q 为大于的整数,其值通过键盘输入。

S   = 2 + 3 + 4 +

n1 2 3

例如, 若 q 的值为 50.0  则输出应为: Sn=50.416695  请将源文件保存为exercise2-1.scala,在REPL 模式下测试运行,测试样例:q=1 时,Sn=2;q=30 时,Sn=30.891459 q=50 时,Sn=50.416695。

 

 

 

模拟图形绘制

 

对于一个图形绘制程序,用下面的层次对各种实体进行抽象。定义一个 Drawable 的特质,其包括一个 draw 方法,默认实现为输出对象的字符串表示。定义一个 Point 类表示点, 其混入了 Drawable 特质,并包含一个 shift 方法,用于移动点。所有图形实体的抽象类为

Shape,其构造函数包括一个 Point 类型,表示图形的具体位置(具体意义对不同的具体图形不一样)。Shape 类有一个具体方法 moveTo 和一个抽象方法 zoom,其中 moveTo 将图形从当前位置移动到新的位置, 各种具体图形的 moveTo 可能会有不一样的地方。

 

abstract class Shape{
  var point:Point
  def zoom(beishu:Double)
   def moveTo(){
    println("welcome")
   }
}
class Line(point1: Point, point2: Point) extends Shape {
  override var point: Point = point1
  var lastpoint = point2
  def draw(): Unit ={
   println(point+"--"+lastpoint)
  }
   def moveTo(pointend: Point): Unit ={
    point.shift(pointend.x,pointend.y)
     lastpoint.shift(pointend.x,pointend.y)
  }

  override def zoom(beishu:Double): Unit = {
      if(point.y<lastpoint.y&&point.x<lastpoint.x){
        var midpoint = new Point(0.0,0.0)
        midpoint.x=(point.x+lastpoint.x)/2
        midpoint.y=(point.y+lastpoint.y)/2
        var xlength = lastpoint.x-point.x
        var ylength = lastpoint.y-point.y
        lastpoint.y=midpoint.y+(ylength*beishu/2)
        lastpoint.x=midpoint.x+(xlength*beishu/2)
        point.y = midpoint.y-ylength*beishu/2
        point.x = midpoint.x-xlength*beishu/2
      }

  }
}
View Code

结果

 

posted on 2021-12-27 14:24  sakura_xxg  阅读(45)  评论(0)    收藏  举报