(Q) 다음은 우리반 학생의 과목별 성적 정보입니다
이름을 제외한 나머지 정보들을 단 하나의 2차원 배열로 저장하고 싶습니다.
총점과 평균과 순위는 최초 0으로 설정한 뒤 계산을 통해서 채운 뒤 출력하려고 합니다
프로그래밍 코드를 작성하여 모든 정보를 채우고 출력하세요
1) 총점과 평균을 나눠서 출력
package day08;
public class Day08_array2d_Test09 {
public static void main(String[] args) {
// 배열
int[][] array = new int[][] {
{100, 90, 80, 0, 0, 0},
{95, 92, 93, 0, 0, 0},
{70, 95, 95, 0, 0, 0}
};
// 합계
for(int i = 0 ; i < array.length ; i ++) {
int sum = 0;
for(int j = 0 ; j < array[i].length ; j ++) {
sum += array[i][j];
}
array[i][3] = sum;
}
// 평균
for(int i = 0 ; i < array.length ; i ++) {
array[i][4] = array[i][3] / 3;
}
// 등수 출력
for(int i = 0 ; i < array.length ; i ++) {
int mySum = array[i][3];
int rank = 1;
for(int j = 0 ; j < array.length ; j ++) {
if(mySum < array[j][3]) {
rank ++;
}
}
array[i][5] = rank;
}
// 배열 출력
for(int i = 0 ; i < array.length ; i ++) {
for(int j = 0 ; j < array[i].length ; j ++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
2) 총점과 평균을 한번에 출력 (총합이 변할 때 평균을 지속적으로 갱신)
package day08;
public class Day08_array2d_Test09_2 {
public static void main(String[] args) {
// 배열
int[][] array = new int[][] {
{100, 90, 80, 0, 0, 0},
{95, 92, 93, 0, 0, 0},
{70, 95, 95, 0, 0, 0}
};
// 합계와 평균
for(int i = 0 ; i < array.length ; i ++) {
int sum = 0; // i가 바뀜과 동시에 합계 변수 초기화
int avg = 0; // i가 바뀜과 동시에 평균 변수 초기화
for(int j = 0 ; j < array[i].length ; j ++) {
sum += array[i][j]; // sum에 array[i][j]를 더하여 대입
avg = sum / 3; // 바뀐 sun에 대한 새로운 평균 저장 (평균 갱신)
}
array[i][3] = sum;
array[i][4] = avg;
}
// 등수 출력
for(int i = 0 ; i < array.length ; i ++) {
int mySum = array[i][3];
int rank = 1;
for(int j = 0 ; j < array.length ; j ++) {
if(mySum < array[j][3]) {
rank ++;
}
}
array[i][5] = rank;
}
// 배열 출력
for(int i = 0 ; i < array.length ; i ++) {
for(int j = 0 ; j < array[i].length ; j ++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
3) 전체 배열 중 점수 데이터가 있는 배열만 고려하는 방법
- 배열의 진행 범위를 array[0][0]부터 array[2][2]까지로 제한한다
- 위에서 아래 방향으로 진행하면서 특정 회차에 데이터를 특정 행의 총점칸에 '+='하여 총점을 구한다
package day08;
public class Day08_array2d_Test09_3 {
public static void main(String[] args) {
// 배열
int[][] array = new int[][] {
{100, 90, 80, 0, 0, 0},
{95, 92, 93, 0, 0, 0},
{70, 95, 95, 0, 0, 0}
};
// 합계와 평균
for(int j = 0 ; j < 3 ; j ++) {
for(int i = 0 ; i < 3 ; i ++) {
if((i + j) % array.length == 0) {
array[i][3] += array[i][j];
array[i][4] = array[i][3] / 3;
}
else if((i + j) % array.length == 1) {
array[i][3] += array[i][j];
array[i][4] = array[i][3] / 3;
}
else if((i + j) % array.length == 2) {
array[i][3] += array[i][j];
array[i][4] = array[i][3] / 3;
}
}
}
// 등수 출력
for(int i = 0 ; i < array.length ; i ++) {
int mySum = array[i][3];
int rank = 1;
for(int j = 0 ; j < array.length ; j ++) {
if(mySum < array[j][3]) {
rank ++;
}
}
array[i][5] = rank;
}
// 배열 출력
for(int i = 0 ; i < array.length ; i ++) {
for(int j = 0 ; j < array[i].length ; j ++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
'국비교육 > 국비교육 복습' 카테고리의 다른 글
Day09_oop.basic3 : 객체 생성 연습 (2) (0) | 2022.08.07 |
---|---|
Day09_oop.basic2 : 객체 생성 연습 (1) (0) | 2022.08.07 |
!Day08_array2d_Test08 : 지뢰 찾기 + 자신 근처 지뢰 갯수 카운트 (★★★★) (0) | 2022.08.07 |
Day08_array2d_Test07 : 빙고판 만들기 (2차원 배열 + 랜덤 배열) (★) (0) | 2022.08.07 |
!Day08_array2d_Test06 : 2차원 배열 (대각 방향 초기화 - 마방진의 원리) (★★★) (0) | 2022.08.07 |