👨‍💻Programming/JAVA & C언어 예제

JAVA(자바) - 배열을 사용해 합, 평균, 석차 구하기

코너(Corner) 2020. 11. 9.
반응형

본문 JAVA(자바) - 배열을 사용해 합, 평균, 석차 구하기

 

배열을 이용해 아래와 같은 출력이 진행 되도록 만들어라. 


 

 


소스 코드

더보기
	Scanner sc = new Scanner(System.in);
		// 3. 번문제 사진참고 배열을 사용해 합 평균 석차 구하기
		// 석차(rank)는 비교를 하면서 순위를 매겨야하는데..

		// 인원수 만큼 배열의 메모리를 할당한다.
		int cnt;
		int num[];
		int korEng[][];
		int sum[];
		int avg[];
		int rank[];

		do {
			System.out.print("인원수를 입력하세요. 1~10명 >");
			cnt = sc.nextInt();
		} while (cnt < 1 || cnt > 10);
		// 메모리 할당
		num = new int[cnt];
		korEng = new int[cnt][2];
		sum = new int[cnt];
		avg = new int[cnt];
		rank = new int[cnt];
		String[] title = { "국어", "영어" };
		// 국어와 영어라는 메뉴 (for문에서 써먹을용)

		for (int i = 0; i < cnt; i++) {
			System.out.print("번호 입력 >");
			num[i] = sc.nextInt();
			for (int j = 0; j < 2; j++) { // 국어와 영어를 입력 할 것이기 때문에 2번 반복
				System.out.print(title[j] + " 점수 입력 :");
				korEng[i][j] = sc.nextInt();
				sum[i] += korEng[i][j]; // 총점계산
			}
		}
		for (int i = 0; i < cnt; i++) {
			rank[i] = 1; // 랭크를 1로 초기화 시켜놓고 밑에서 비교했을 때 낮은 점수는 랭크를 ++
		}
		// 석차계산
		for (int i = 0; i < cnt - 1; i++) { // 인원은 5명이면 4번만 비교하기 때문에 -1
			for (int j = i + 1; j < cnt; j++) { // 자신 다음의 인덱스와 비교하기 위한 초기식
				if (sum[i] > sum[j]) { // 인덱스 자기 자신을 다음 순서와 비교할 때 다음순서가 더 작다면
					rank[j]++; // 다음순서가 랭크 상승 (랭크는 올라갈 수록 낮은것, 등수 이기 때문에 1등만 기억하는 세상)
				} else if (sum[i] < sum[j]) { // 자신이 다음순서보다 작다면 자신을 랭크 올림
					rank[i]++;
				}
			}
		}
		System.out.println("\n성적처리\n번호\t\t  국어   영어   합계   평균\t석차");
		for (int i = 0; i < cnt; i++) {
			System.out.print(num[i] + "\t\t"); //
			for (int j = 0; j < korEng[i].length; j++) {
				System.out.printf("%5d", korEng[i][j]);
			}
			System.out.printf("%5d %d %5d\n", sum[i], sum[i] / 2, rank[i]);
		}

 

 

import java.util.Scanner;

public class Main2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
/*
 * 정적 배열 = 멈춰 있다, 수동적이다, 능동적이지 못한 점이 크다.
 * 
int[][] i2 = new int [4=인원수 몇명이냐 4명입니다 ][5]
o o o o x x x x x 
o o o o o o 0 0 0
o o o o o 0 0 0 0
o o o o o o 0 0 0
  int[] i = new int[4];
  				o o o o
  				
  				
 */
		int[][] student = new int[7][6];

		// System.out.println(student.length+ " " + student[0].length);
		// 입력 받기
		for (int i = 0; i < student.length - 2; i++) {
			System.out.println(i + 1 + "번째 사람 입력순서는 번호 국어점수 영어점수 입력하세요");
			student[i][0] = i + 1;
			for (int j = 1; j < student[i].length - 3; j++) {// 1,2
				student[i][j] = sc.nextInt();// 점수 입력
				student[i][3] += student[i][j];// 합계 누적
				student[5][j] += student[i][j];// 과목합계누적
			}
			student[i][4] = student[i][3] / 2;
		} // end for
		// 과목 평균 구하기
		for (int i = 1; i < student.length - 1; i++) {
			student[6][i] = student[5][i] / (student.length - 1);
		}

		// 등수 구하기
		for (int i = 0; i < student.length; i++) {
			student[i][5] = 1;
			for (int j = 0; j < student.length; j++) {
				if (student[i][3] < student[i][3])
					student[i][5]++;
			}
		}

		// 출력하기

		for (int i = 0; i < student.length; i++) {

			for (int j = 0; j < student[i].length; j++) {
				System.out.printf("%5d", student[i][j]);
			}
			System.out.println();
		}

	}

}

 

반응형

댓글