우당탕탕 개발일지

6일차_과제 본문

비트캠프/과제

6일차_과제

ujin302 2024. 7. 10. 17:54
반응형

1. 성적  처리 프로그램

문제

1. 사지선다형 5문제 제공 
2. 정답은 "11111"
>> 정답은 상수화 시킴 & 필드 변수로 사용함. 
3. 1문제당 점수는 20점이다. 
[실행결과]
인원 수 입력 : 2
 
이름 입력 : 홍길동
답안지 입력 : 12311
 
이름 입력 : 코난
답안지 입력 : 11311

 

            ***성적표***

이름     1 2 3 4 5        점수 
홍길동  O X X O O    60
코난     O O X O O    80 

 

코드

package homework;

import java.util.Scanner;

public class SungJukOX {
	static final String JUNG = "11111";
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("인원 수 입력 : ");
		int count = sc.nextInt();

		String[] name = new String[count];
		String[][] ox = new String[count][5];
		int[] score = new int[count];
		String dap = "";
		

		// [1] 정보 입력 
		for(int i=0; i<count; i++) {
			// 1. 이름 입력 
			System.out.print("\n이름 입력 : ");
			name[i] = sc.next();
			
			// 2. 답안지 입력 & 사지선다 확인 
			boolean isNotOk = true;
			while(isNotOk) {
				System.out.print("답안지 입력 : ");
				dap = sc.next();
				
				// 2-1. 정답 개수 확인
				if(dap.length() == 5) {
					for(int j=0; j<JUNG.length(); j++) {
						// 2-2. 모든 입력 값이 1~4 가 맞는지 확인 
						if(Integer.parseInt(dap.charAt(j)+"") >= 5 ) {
							// 입력 값이 5이상일 경우 for문 빠져나감 
							break;
						}else if(j == JUNG.length()-1) {
							// 5미만 && 마지막 입력 값 확인 
							isNotOk = false;
						}
					}
				}
			}
			
			// 3. 점수 계산 
			for(int j=0; j<JUNG.length(); j++) {
				if(dap.charAt(j) == JUNG.charAt(j)) {
					ox[i][j] = "O";
					score[i] += 20;
				}else {
					ox[i][j] = "X";
				}
			}
		}
		
		// [2] 성적 출력 
		System.out.println("\t***성적표***");
		System.out.println("이름\t1 2 3 4 5\t점수 ");
		
		for(int i=0; i<count; i++) {
			System.out.print(name[i] + "\t");
			for(int j=0; j<JUNG.length(); j++) {
				System.out.print(ox[i][j] + " ");
			}
			System.out.println("\t" + score[i]);
		}
	}

}

 

 

2. 성적 계산

문제

인원수를 입력하여 인원수만큼 데이터를 입력받고 총점과 평균을 구하시오
평균은 소수이하 2째자리까지 출력

[실행결과]
인원수 : 2 (cnt)

이름 입력 : 홍길동 (name)
과목수 입력 : 2   (subjectCnt)
과목명 입력 : 국어 (subject)
과목명 입력 : 영어
국어 점수 입력 : 95 (jumsu)
영어 점수 입력 : 100
---------------------
이름 입력 : 이기자
과목수 입력 : 3
과목명 입력 : 국어
과목명 입력 : 영어
과목명 입력 : 과학
국어 점수 입력 : 95
영어 점수 입력 : 100
과학 점수 입력 : 90
---------------------

이름     국어     영어   총점     평균
홍길동    95     100   xxx     xx.xx

이름      국어  영어   과학    총점      평균
이기자      95   100   90    xxx      xx.xx

 

코드

package homework;

import java.util.Scanner;

public class SungJuk {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		// 1. 인원 수 입력 
		System.out.print("인원 수 : ");
		
		int cnt = sc.nextInt();
		String[] name = new String[cnt]; // 학생 이름 
		
		int subjectCnt = 0;
		String[][] subject = new String[cnt][]; // 학생 수 만큼 과목 개수 저장 
		
		int[][] jumsu = new int[cnt][]; // 각 학생 별, 각 과목별 점수 저장 
		double[] avg = new double[cnt];
		
		
		System.out.println("--------------");
		// 2. 정보 입력 
		for(int i=0; i<cnt; i++) {
			// 2-1. 기본 정보 입력 
			System.out.print("이름 입력 : ");
			name[i] = sc.next();
			
			System.out.print("과목수 입력 : ");
			subjectCnt = sc.nextInt();
			subject[i] = new String[subjectCnt];
			jumsu[i] = new int[subjectCnt+1]; // 평균값때문
			
			// 2-2. 과목명 입력 및 저장 
			for(int j=0; j<subjectCnt; j++) {
				System.out.print("과목명 입력 : ");
				subject[i][j] = sc.next(); 
			}
			
			// 2-3. 과목 별 점수 입력 & 총점
			for(int j=0; j<subjectCnt; j++) {
				System.out.print(subject[i][j] + "점수 입력 : ");
				jumsu[i][j] = sc.nextInt();
				jumsu[i][subjectCnt] += jumsu[i][j]; // 총점 
			}
			
			// 2-4. 평균
			avg[i] = (double)jumsu[i][subjectCnt] / subjectCnt;
			
			System.out.println("--------------");
		}
		
		// 3. 성적표 과목명 출력 
		for(int i=0; i<cnt; i++) {
			// 3-1. 과목명 출력 
			String text = "이름\t";
			for(String j : subject[i]) {
				text += j + "\t";
			}
			text += "총점\t평균\n";
			
			// 3-2. 학생의 점수 출력 
			text += name[i] + "\t";
			for(int j : jumsu[i]) {
				text += j + "\t";
			}
			text += String.format("%.2f", avg[i]) + "\t\n";
			
			// 3-3. 출력
			System.out.println(text);
		}
	}

}

 

 

3. 야구게임

문제

크기가 3개인 정수형 배열을 잡고 1~9사이의 난수를 추출 
난수는 중복되지 않음
사용자는 숫자 3자리를 입력
볼 : 사용자가 입력한 숫자가 난수에 존재하기만 하는 개수 
스트라이크 : 사용자가 입력한 숫자가 난수에 존재하며 위치도 동일한 개수 


[실행결과]
게임을 실행하시겠습니까(Y/N) : w
게임을 실행하시겠습니까(Y/N) : u
게임을 실행하시겠습니까(Y/N) : y

게임을 시작합니다

숫자입력 : 123
0스트라이크 0볼

숫자입력 : 567
0스트라이크 2볼

숫자입력 : 758
1스트라이크 2볼
...

숫자입력 : 785
3스트라이크 0볼

프로그램을 종료합니다.

 

코드

package array;

import java.util.*;

public class BaseBall {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		boolean startGame = true;
		int[] num = new int[3];
		// 1. 게임 실행 여부 확인 
		while(true) {
			System.out.print("게임을 실행하시겠습니까(Y/N) : ");
			String a = sc.next();
			
			if(a.toUpperCase().equals("Y")) {
				System.out.println("게임을 시작합니다.");
				break;
			}else if(a.toUpperCase().equals("N")){
				startGame = false;
				break;
			}
		}
		
		// 2. 난수 3개 추출 
		if(startGame) {
			for(int i=0; i<num.length; i++) {
				boolean isNotFind = true; // 못 찾으면 true
				while(isNotFind) {
					int com = (int)(Math.random() * 9 + 1);
					// 중복 방지 
					for(int j=0; j<=i; j++) {
						if(num[j] == com) { 
							// 중복이면 빠져 나가기 
							break;
						}else if(j == i) {
							// 중복 X && 마지막 번호 
							num[i] = com;
							isNotFind = false; 
						}
					}
				}
			}
		}
		
		// 2. 게임 시작 
		while(startGame) {
			// 1. 숫자 입력 
			System.out.print("숫자 입력 : ");
			String user = sc.next();
			int[] userArr = new int[user.length()];
			
			for(int i=0; i<user.length(); i++) {
				userArr[i] = Integer.parseInt(user.charAt(i) + "");
			}
			
			// 2. 결과 확인 
			int ballCount = 0; // 볼 개수 
			int strikeCount = 0; // 스트라이크 개수 
			for(int i=0; i<num.length; i++) {
				for(int j=0; j<num.length; j++) {
					// 2-1. 볼 확인 
					if(userArr[i] == num[j]) {
						// 2-2. 스트라이크 확인 
						if(i == j) {
							strikeCount++;
						}else ballCount++;
						
						break;
					}
				}
			}
			System.out.println(strikeCount + "스트라이크 " + ballCount + "볼\n" );
			if(strikeCount == num.length) {
				break;
			}	
		}
		System.out.println("프로그램을 종료합니다.");	
	}
}
반응형

'비트캠프 > 과제' 카테고리의 다른 글

10일차_과제  (0) 2024.07.16
9일차_과제  (0) 2024.07.16
7일차_과제  (0) 2024.07.12
5일차_과제  (0) 2024.07.09
4일차_과제  (2) 2024.07.09