다음 5명 학생들의 점수를 합산하고 평균과 석차를 구하여 출력하는 프로그램을 작성하라
다음 5명 학생들의 점수를 합산하고 평균과 석차를 구하여 출력하는 프로그램을 작성하라.(이름은 String형, 국어,영어,수학은 byte형, 합계는 short형, 평균은 float형, 석차는 short형)
1) 개인의 이름을 name 배열에 저장
2) 점수를 2차원 배열 score에 저장(3x5크기)
3) 개인별 점수 합계/평균을 2중 반복문을 이용, 각각 배열 sum과 average에 저장
4) 각 과목별 점수 합계/평균을 2중 반복문을 이용, 각각 배열 sum_subject와 average_subject에 저장
5) 2중 for구문에서 석차를 계산(sum의 i번째 요소와 다른 요소들을 모두 비교해서 다른 요소보다 작을 때마다 1을 증가시키는 방식)
6) 결과 테이블 표시(단, 과목 합계와 과목 평균을 모두 더한 값을 추가적으로 보여 줌)
11-2. 풀이 과정
<사진 설명> 만들기 시작한 때에는 이름과 점수를 초기화했습니다.
<사진 설명> 우선 각 사람들의 점수의 합계를 계산해서 보여주도록 만들어 봤습니다.
<사진 설명> 각 사람의 이름과 점수, 합계, 평균, 과목별 합계까지 저장해서 보여주도록 만들어 봤습니다.
<사진 설명> 추가로 과목별 평균 점수와 석차를 표시하도록 만들어 봤습니다.
모든 부분의 계산이 끝났으므로, 테이블 형태로 보여주기 위해 새로이 결과 테이블을 작성했습니다. 각 개인의 이름, 점수, 합계, 평균, 석차까지 표시했습니다.
<사진 설명> 마지막으로 과목별
합계/평균의 총합을 계산하여, 모든 구현을 완료했습니다.
11-3. 소스 코드
11-4. 실행 화면
<사진 설명> 각 항목이 탭을 이용하여 정렬되었습니다.
11-5. 시행 착오
\
<사진 설명> 수업 시간에 배운 이차원 배열을 이용하여 점수를 초기화 하고, 각 항목의 합계와 평균을 이끌어 내는 데에는 문제가 없었습니다.
<사진 설명> 하지만 석차를 구하는 부분을 만들지 못하고 있다가 인터넷 검색을 통해 석차를 구하는 방식을 알게 되어 그것을 계산에 적용할 수 있었습니다.(출처는 문서의 뒤에 별도 기재하였습니다)
<사진 설명> 하지만 제가 참조한 소스가 제가 만든 것과 다른 형태라서, 해결할 수 있는 개념(하나의 데이터를 고정시키고, 다른 모든 데이터와 비교해 값이 작을 때마다 등수를 올린다)을 차용했습니다.
<사진 설명> 제가 만든 배열 및 변수에 위에서 알아낸 방법을 이용해 석차를 구할 수 있었습니다.
그리고 위의 스크린샷을 보시면 평균 값(오른쪽)이 소수점이 길게 표시되는데, 이를 소수 둘째 자리까지 수정하고 싶어서 마찬가지로 인터넷 검색을 이용했습니다.
<사진 설명> 찾아 보니 C언어에서와 마찬가지로 float 형 변수의 출력을 내가 원하는 대로 설정할 수 있는 방법이 존재했습니다. System.out.format()함수를 이용하여, %.2f 구문을 사용해 해결할 수 있었습니다.(출처는 문서의 뒤에 별도 표기했습니다)
[레포트를 모두
작성하는 데 하루 정도가 걸렸습니다]
레포트를 처음 받고 나서, 문제만 훑어 보고는 C언어를 접해 봤기 때문에 쉬울 거라고 단정지었습니다.
하지만 첫 번째 문제를 제외하고는 생각한 대로 바로 코딩할 수 있는 것이 없었습니다. 특히나 마지막 문제에서는 제가 가진 지식이 적어서 석차를 구하는 방법을 생각해 내지 못했습니다.
결국 인터넷 검색을 통해 구현 방법을 알아내고 나니 프로그래밍을 잘 하기 위해서는 많은 경험을 해 봐야 겠다는 생각을 했습니다.
그리고, 각 문제에서 ;(세미콜론)이나 배열의 이름과 요소 번호([i],[j])들을 잘못 적거나 제외시켜 생긴 수많은 실수들은 너무 기초적이고,
그 횟수가 많아서 표기하지 못했습니다.
현실 세계에서는 이미지를 실제로 구현하는 데 약간의 오류가 허용되지만, 프로그래밍에서는 하나의 문법적/논리적 오류도 문제 해결에 장애 요소가
될 수 있다는 생각이 들었습니다.
이런 미숙함을 빨리 벗어나서 좀 더 나은 프로그램을 만들고 싶습니다. 고맙습니다.
2. 참고 자료
인터넷
n float의 format을 소수점 이하 몇 번째까지 표시하기(링크)
n 석차 구하기(링크)
서적
n 명쾌한 JAVA 입문(영진닷컴)
'프로그래밍 실습 > 자바(Java)' 카테고리의 다른 글
1부터 100까지 사이의 소수(Prime number)를 표시하는 프로그램을 작성 하라. (0) | 2010.05.13 |
---|---|
나와 나의 가장 친한 친구의 이름과 학번, 주소, 전화번호 그리고 한달 용돈을 출력하는 프로그램을 작성하라. 또한, 한달 용돈은 내가 친구보다 얼마만큼 차이가 나는지 출력해 보라. (0) | 2010.05.13 |
다음 다이어몬드 모양과 같이 출력되는 프로그램을 작성하라. (0) | 2010.05.13 |
3개의 한자리 숫자를 더한 값이 15가 될 때, 3개의 숫자를 모두 구하라 (0) | 2010.05.13 |
InputStreamReader 사용하기 (0) | 2009.10.07 |