// // simplified grade calculations program // prompt for some grades // print numeric grade and letter grade // val Exam1Max = 100 val Exam2Max = 200 val QuizMax = 10 val NumberOfQuizzes = 6 def getScore(assignment : String, maxPoints : Int) : Int = { println("enter your score on " + assignment + " (max " + maxPoints + ")") readInt } def getQuizScores(quizzes : Array[Int], startIndex : Int) { if (startIndex < quizzes.size) { quizzes(startIndex) = getScore("quiz " + (startIndex+1), QuizMax) getQuizScores(quizzes, startIndex+1) } } def arraySum(a : Array[Int], startIndex : Int) : Int = { if (startIndex < a.size) { a(startIndex) + arraySum(a, startIndex + 1) } else { 0 } } val exam1 = getScore("exam1", Exam1Max) val exam2 = getScore("exam2", Exam2Max) val quizzes = new Array[Int](NumberOfQuizzes) getQuizScores(quizzes, 0) val numericGrade = 100 * (exam1 + exam2 + arraySum(quizzes, 0)).toDouble / (Exam1Max + Exam2Max + QuizMax * NumberOfQuizzes) println("numeric grade is " + numericGrade) val letterGrade = if (numericGrade >= 90) 'A' else if (numericGrade >= 80) 'B' else if (numericGrade >= 70) 'C' else if (numericGrade >= 60) 'D' else 'F'; println("letter grade is " + letterGrade)