计算级数
请用脚本的方式编程计算并输出下列级数的前 n 项之和 Sn,直到 Sn 刚好大于或等于 q 为止,其中q 为大于 0 的整数,其值通过键盘输入。
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 } } }
结果

浙公网安备 33010602011771号