This time just a simple example of grading scores (0 - 100) with letters (A - F). Two approaches are presented, one using switch/case in an "on the fly" function, and the other uses the score as an index to a string of letters F through A.

Edited by vegaseat

``````// GradeLetter1.go
//
// A CS professor gives 100-point exams that are graded on the scale
// 90-100:A, 80-89:B, 70-79:C, 60-69:D, 50-59:E, <50:F
// Write a program that accepts an exam score and prints out the
// corresponding grade
//
// a look at switch/case and strings.Repeat()

package main

import "fmt"
import s "strings"

func main() {
fmt.Println("Grading scores:")

getGrade := func(score int) string {
switch {
case score >= 90: return "A"
case score >= 80: return "B"
case score >= 70: return "C"
case score >= 60: return "D"
case score >= 50: return "E"
case score < 50: return "F"
}
return "check score value"
}
// testing ...
scores := []int {49, 97, 71, 69, 80, 50}
for _, score := range scores {
grade := getGrade(score)
fmt.Printf("Score %v = grade %s\n", score, grade)
}

fmt.Println(s.Repeat("-", 20))

// another option ...
gradeStr := s.Repeat("F", 50) + s.Repeat("E", 10) + s.Repeat("D", 10) +
s.Repeat("C", 10) + s.Repeat("B", 10) + s.Repeat("A", 11)
for _, score := range scores {
// use score as the index of the gradeStr
grade := gradeStr[score]
fmt.Printf("Score %v = grade %c\n", score, grade)
}
//println(gradeStr)  // test

}

/*
Grading scores:
Score 49 = grade F
Score 97 = grade A
Score 71 = grade C
Score 69 = grade D
Score 80 = grade B
Score 50 = grade E
--------------------
Score 49 = grade F
Score 97 = grade A
Score 71 = grade C
Score 69 = grade D
Score 80 = grade B
Score 50 = grade E
*/``````
1
Contributor
1
Reply
19
Views
3 Years
Discussion Span
Last Post by vegaseat

`import s "strings"`means that s is an alias for package "strings", saves you some typing.

Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.