快速学习scala语法和数据结构,完成以下作业内容。

作业内容:

以下数据包含了某大学某专业学生的成绩,数据格式如下所示: Tom,DataBase,80 Tom,Algorithm,50 Tom,DataStructure,60 Jim,DataBase,90 Jim,Algorithm,60 Jim,DataStructure,80 Jack,DataBase,92 Jack,Algorithm,62 Jack,DataStructure,82

问题描述

请根据以上给定的实验数据,在scala中通过编程来计算以下内容: (1)该系总共有多少学生; (2)该系共开设了多少门课程; (3)Tom同学的总成绩平均分是多少; (4)求每名同学的选修的课程门数; (5)该系DataBase课程共有多少人选修; (6)各门课程的平均分是多少;

参考代码:

import scala.collection.mutable

object Homework {

def main(args: Array[String]): Unit = {

val map = Map(

("Tom", "DataBase") -> 80,

("Tom", "Algorithm") -> 50,

("Tom", "DataStructure") -> 60,

("Jim", "DataBase") -> 90,

("Jim", "Algorithm") -> 60,

("Jim", "DataStructure") -> 80,

("Jack", "DataBase") -> 92,

("Jack", "Algorithm") -> 62,

("Jack", "DataStructure") -> 82

)

// 该系总共有多少学生;

printf("该系总共有%d名学生\n", calculate_department_length(map))

// 该系共开设了多少门课程;

printf("该系共开设了%d门课程\n", calculate_course_length(map))

//Tom同学的总成绩平均分是多少;

printf("Tom同学的总成绩平均分是%.2f\n", calculate_student_average_grade(map, "Tom"))

//求每名同学的选修的课程门数;

val set_student = mutable.Set[String]()

val set_course = mutable.Set[String]()

map.keys.foreach(tuple => {

set_student += tuple._1

set_course += tuple._2

})

for (student <- set_student) {

printf("%s同学的选修的课程门数是%d\n", student, calculate_student_course_num(map, student))

}

// 该系DataBase课程共有多少人选修

printf("该系DataBase课程共有%d人选修\n", calculate_course_num(map, "DataBase"))

// 各门课程的平均分是多少;

for (course <- set_course) {

printf("%s课程的平均分是%.2f\n", course, calculate_course_average_grade(map, course))

}

}

def calculate_department_length(map: Map[(String, String), Int]): Int = {

// 定义一个可变set

// 使用return 这样看起来比较舒服,和python3.10语法很像

val set = mutable.Set[String]()

for (student <- map.keys) {

set += student._1

}

return set.size

}

def calculate_course_length(map: Map[(String, String), Int]): Int = {

val set = mutable.Set[String]()

for (student <- map.keys) {

set += student._2

}

return set.size

}

def calculate_student_average_grade(map: Map[(String, String), Int], student_name: String): Double = {

var grade: Double = 0

val set = mutable.Set[String]()

for (student <- map.seq) {

if (student._1._1 == student_name) {

set += student._1._2 //计算这名学生的课程数量

grade += student._2 //计算学生总成绩

}

}

return grade / set.size

}

def calculate_student_course_num(map: Map[(String, String), Int], student_name: String): Int = {

val set = mutable.Set[String]()

for (student <- map.seq) {

if (student._1._1 == student_name) {

set += student._1._2 //计算这名学生的课程数量

}

}

return set.size

}

def calculate_course_num(map: Map[(String, String), Int], course_name: String): Int = {

var length: Int = 0

for (student <- map.seq) {

if (student._1._2 == course_name) {

length += 1 //该系课程共有多少人选修;

}

}

return length

}

def calculate_course_average_grade(map: Map[(String, String), Int], course_name: String): Double = {

var grade: Double = 0

var length: Int = 0

for (student <- map.seq) {

if (student._1._2 == course_name) {

length += 1 //该系课程共有多少人选修;

grade += student._2 // 计算总成绩

}

}

return grade / length

}

}

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: