본문 바로가기

프로그래밍 언어/Swift

[Swift] 학생의 평균 점수 및 과목별 평균 점수 계산하기

반응형
1. 학생을 무제한 입력받는다. 
2. 학생 데이터 - 학생 이름, ios, Android, Web 과목의 성적을 학점으로 입력받는다. 
3. 입력이 끝나면 
3-1. 각 학생의 이름, 과목별 성적, 평균 평점을 계산하여 출력한다.
3-2. 전체 학생의 과목별 성적 평균을 계산하여 출력한다.

지난번 포스팅한 딕셔너리을 이용하여 문제를 풀어보겠습니다. 

 

 

1. 딕셔너리를 만든다. 

var student_scores:[String:[String:Double]] = [:]

 

2. 입력 값이 없을 때 까지 학생의 이름과 과목별 성적을 입력받는다. 

while true{
    print("학생 이름: ", terminator:"" )
    var student_name = readLine()!
    if student_name == ""{
        print("프로그램을 종료합니다.")
        break
    }
    print("ios 성적: ", terminator:"" )
    var ios_score = Double(readLine()!)!
    print("Android 성적: ", terminator:"" )
    var android_score = Double(readLine()!)!
    print("Web 성적: ", terminator:"" )
    var web_score = Double(readLine()!)!
    student_scores[student_name] = ["ios": ios_score,"android": android_score,"web": web_score]
}

 

3.  과목별 성적의 합을 선언 및 초기화한다. 

var ios_total:Double = 0.0
var android_total:Double = 0.0
var web_total:Double = 0.0

 

4. 학생의 이름과 과목별 점수를 더한다.

for (name, scores) in student_scores{
    var sub_total = scores["ios"]! + scores["android"]! + scores["web"]!
    ios_total += scores["ios"]!
    android_total += scores["android"]!
    web_total += scores["web"]!
    print(" \(name) 학생의 총점 \(sub_total) 평균 \(sub_total/3.0) 입니다.")
}

 

5. 입력된 학생의 수를 계산하여 과목별 평균을 계산한다. 

var student_count = Double(student_scores.count)
print(" 과목별 평균 ios: \(ios_total/student_count), android: \(android_total/student_count), web: \(web_total/student_count)")

 

전체 코드는 다음과 같습니다. 

import Foundation

var student_scores:[String:[String:Double]] = [:]

while true{
    print("학생 이름: ", terminator:"" )
    var student_name = readLine()!
    if student_name == ""{
        print("프로그램을 종료합니다.")
        break
    }
    print("ios 성적: ", terminator:"" )
    var ios_score = Double(readLine()!)!
    print("Android 성적: ", terminator:"" )
    var android_score = Double(readLine()!)!
    print("Web 성적: ", terminator:"" )
    var web_score = Double(readLine()!)!
    
    student_scores[student_name] = ["ios": ios_score,"android": android_score,"web": web_score]
}

var ios_total:Double = 0.0
var android_total:Double = 0.0
var web_total:Double = 0.0

for (name, scores) in student_scores{
    var sub_total = scores["ios"]! + scores["android"]! + scores["web"]!
    ios_total += scores["ios"]!
    android_total += scores["android"]!
    web_total += scores["web"]!
    print(" \(name) 학생의 총점 \(sub_total) 평균 \(sub_total/3.0) 입니다.")
}

var student_count = Double(student_scores.count)
print(" 과목별 평균 ios: \(ios_total/student_count), android: \(android_total/student_count), web: \(web_total/student_count) 입니다.")

 

입력

학생 이름: ppomelo
ios 성적: 4.5
Android 성적: 4.0
Web 성적: 4.5
학생 이름: apple
ios 성적: 4.5
Android 성적: 3.0
Web 성적: 3.5
학생 이름: kiwi
ios 성적: 2.5
Android 성적: 3.0
Web 성적: 4.0
학생 이름:

 

출력

프로그램을 종료합니다. 
apple 학생의 총점 11.0 평균 3.6666666666666665 입니다. 
kiwi 학생의 총점 9.5 평균 3.1666666666666665 입니다. 
ppomelo 학생의 총점 13.0 평균 4.333333333333333 입니다. 
과목별 평균 ios: 3.8333333333333335, android: 3.3333333333333335, web: 4.0 입니다.

 

반응형