다음 5명 학생들의 점수를 합산하고 평균과 석차를 구하여 출력하는 프로그램을 작성하라.(이름은 String, 국어,영어,수학은 byte, 합계는 short, 평균은 float, 석차는 short


 11-1. 해법 정리

1) 개인의 이름을 name 배열에 저장

2) 점수를 2차원 배열 score에 저장(3x5크기)

3) 개인별 점수 합계/평균을 2중 반복문을 이용, 각각 배열 sum average에 저장

4) 각 과목별 점수 합계/평균을 2중 반복문을 이용, 각각 배열 sum_subject average_subject에 저장

5) 2 for구문에서 석차를 계산(sumi번째 요소와 다른 요소들을 모두 비교해서 다른 요소보다 작을 때마다 1을 증가시키는 방식)

6) 결과 테이블 표시(, 과목 합계와 과목 평균을 모두 더한 값을 추가적으로 보여 줌)

 

11-2. 풀이 과정

 


<사진 설명> 만들기 시작한 때에는 이름과 점수를 초기화했습니다.

 


<사진 설명> 우선 각 사람들의 점수의 합계를 계산해서 보여주도록 만들어 봤습니다.

 


<사진 설명> 각 사람의 이름과 점수, 합계, 평균, 과목별 합계까지 저장해서 보여주도록 만들어 봤습니다.

 


<사진 설명> 추가로 과목별 평균 점수와 석차를 표시하도록 만들어 봤습니다.

 

모든 부분의 계산이 끝났으므로, 테이블 형태로 보여주기 위해 새로이 결과 테이블을 작성했습니다. 각 개인의 이름, 점수, 합계, 평균, 석차까지 표시했습니다.

 


<사진 설명> 마지막으로 과목별 합계/평균의 총합을 계산하여, 모든 구현을 완료했습니다.

11-3. 소스 코드

 


 

 

11-4. 실행 화면

 

<사진 설명> 각 항목이 탭을 이용하여 정렬되었습니다.

 


 

 

11-5. 시행 착오

\

<사진 설명> 수업 시간에 배운 이차원 배열을 이용하여 점수를 초기화 하고, 각 항목의 합계와 평균을 이끌어 내는 데에는 문제가 없었습니다.


<사진 설명> 하지만 석차를 구하는 부분을 만들지 못하고 있다가 인터넷 검색을 통해 석차를 구하는 방식을 알게 되어 그것을 계산에 적용할 수 있었습니다.(출처는 문서의 뒤에 별도 기재하였습니다)


<사진 설명> 하지만 제가 참조한 소스가 제가 만든 것과 다른 형태라서, 해결할 수 있는 개념(하나의 데이터를 고정시키고, 다른 모든 데이터와 비교해 값이 작을 때마다 등수를 올린다)을 차용했습니다.


<사진 설명> 제가 만든 배열 및 변수에 위에서 알아낸 방법을 이용해 석차를 구할 수 있었습니다.

그리고 위의 스크린샷을 보시면 평균 값(오른쪽)이 소수점이 길게 표시되는데, 이를 소수 둘째 자리까지 수정하고 싶어서 마찬가지로 인터넷 검색을 이용했습니다.


<사진 설명> 찾아 보니 C언어에서와 마찬가지로 float 형 변수의 출력을 내가 원하는 대로 설정할 수 있는 방법이 존재했습니다. System.out.format()함수를 이용하여, %.2f 구문을 사용해 해결할 수 있었습니다.(출처는 문서의 뒤에 별도 표기했습니다)

[레포트를 모두 작성하는 데 하루 정도가 걸렸습니다]

레포트 작성을 마치고

1. 작성 후기

레포트를 처음 받고 나서, 문제만 훑어 보고는 C언어를 접해 봤기 때문에 쉬울 거라고 단정지었습니다.

하지만 첫 번째 문제를 제외하고는 생각한 대로 바로 코딩할 수 있는 것이 없었습니다. 특히나 마지막 문제에서는 제가 가진 지식이 적어서 석차를 구하는 방법을 생각해 내지 못했습니다.

결국 인터넷 검색을 통해 구현 방법을 알아내고 나니 프로그래밍을 잘 하기 위해서는 많은 경험을 해 봐야 겠다는 생각을 했습니다.

그리고, 각 문제에서 ;(세미콜론)이나 배열의 이름과 요소 번호([i],[j])들을 잘못 적거나 제외시켜 생긴 수많은 실수들은 너무 기초적이고, 그 횟수가 많아서 표기하지 못했습니다.

 

현실 세계에서는 이미지를 실제로 구현하는 데 약간의 오류가 허용되지만, 프로그래밍에서는 하나의 문법적/논리적 오류도 문제 해결에 장애 요소가 될 수 있다는 생각이 들었습니다.

 

이런 미숙함을 빨리 벗어나서 좀 더 나은 프로그램을 만들고 싶습니다. 고맙습니다.

 

2. 참고 자료                                                                 

 

인터넷

n  float format을 소수점 이하 몇 번째까지 표시하기(링크)

n  석차 구하기(링크)

 

서적

n  명쾌한 JAVA 입문(영진닷컴)

,