달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

이차원 배열의 활용 마지막 문제이다.

자료입력에 적합한 배열의 특성에 맞게 성적관리 프로그램을 짜는 문제이다.

 

문제. 학생 4명 각 각의 4 과목 점수를 입력받고, 과목별 총점, 학생별 총점, 총합 까지 저장되게 하자.

즉, 5*5 배열을 만들어 값을 저장한 후, 출력하라.

 

특징.

  1. 본인은 입력과 출력을 같은 반복문을 쓰지 않고 나누어 코딩하였다. 수정과 디버깅의 용이함 때문으로 보이지만 사실 실력이 모잘랐 ㅠ;;
  2. 그리고 숫자 외의 정보표현을 위해 name이라는 문자열 배열을 만든 것이다. 각 각의 반복문에 분기문을 지저분하게 첨가할 수도 있었으나, 가능한 문자정보의 출력을 자동화하고자 노력하였다. 말이 엄청 거창하게 들리는데, 먼말인지 알거다;;

    일단 가벼운 마음으로 코드를 함 슥 보자. Score[i-5] 이 부분은 원래 score[i] 였다. 원래 의도한 바가 있어서 [i-5]형태로 쓴 건데, 코딩하다가 그 용도가 없어졌다. 그래도 있어 보이므로 그대로 남겨두었다.

 

 

우선 아래 입력용 반복문부터 보자.

기본적으로 행4회, 열4회로 4*4 반복을 하고 있다. 당연하다 4*4 회 입력하고, 나머지 총점들은 알아서 더해지니깐.

변수 때문에 복잡해 보이지만, 기본적으로 [학생0][과목0]~[학생4][과목4] 까지 입력을 받는 코드이다. 다만 각 행의 모든 입력값을 마지막행에 누적해 주자. 또, 바깥 쪽 포문이 1회 돌 때 (즉, 행이 바뀔 때 혹은 즉 i가 ++할 때)에..마지막 원소의 값 (즉 과목별 총점)을 score[4][4]에 더해주면 총점 반영이 된다.

입력용 반복문의 핵심은, 각 원소에 입력된 데이터가 적합한 원소에 적합하게 합산 되는 지가 중요하다.

 

 

참고적으로 아래 코드에서 (i-5)를 그냥 i로 고치고 초기값도 5가 아닌 0을 넣자.

사람이름 배열에 접근하기 위한 변수를 i로 공통으로 썼는데, 역시나 코드가 보기 어려워 졌다.

 

 

그 다음 아래의 출력용 코드를 보자. 메인은 두 반복문 중에 아래 쪽 반복문이다.

이중 반복문인데, 살펴보면 안쪽 반복문을 수행하기 전에 (즉, 철수의 각 과목 성적을 출력하기 전에), 사람의 이름이 찍혀야 한다. 그래서 첫 줄에 프린트문으로 현재 사람이름(철수)을 찍고 들어가는 것이다.

그 외에는 일반적인 형태의 출력용 반복문이다.

 

그리고 윗 부분의 반복문은 과목명 배열을 접근하여 출력하기 위한 코드이다.

즉, 우리의 5*5 성적 배열을 출력하기 전에, 첫 줄에 각 과목명을 찍어 놓는 것이다.

 

이상으로, 이차원 배열의 활용 문제 3 성적관리 프로그램을 만들어 보았다.

잘 보았다 싶으시면 손가락을 꾸욱 눌러주세요 ㅋㅋ

Posted by C언어 보이
|