국비수업/CODE

code 실습 / 5️⃣

밀김 2023. 2. 22. 12:00
728x90

 

 

 

 

 

 

 

✏️오늘 수업때 쌤이 내주신 나비모양 그리기

 

 

package ex1;
public class Hello {
	public static void main(String[] args) {
			
		for(int i=0; i<11; i++) { //세로
			for(int j=0; j<11; j++) { //가로
				if(j>i && i+j<10)
					System.out.print(" ");
				 //대각선으로 4분할된 정사각형에서 윗영역
				else if(j<i && i+j>10)
					System.out.print(" ");
				//대각선으로 4분할된 정사각형에서 아래영역
				else
					System.out.print("*");
				//그외 영역
			}
			
			System.out.println();
		}
	}

}

 

 

그림그려서 다른 문제 혼자 풀어봄...와..이게 되네...

package ex1;
public class Hello {
	public static void main(String[] args) {
			
		for(int i=0; i<5; i++) { //세로
			for(int j=0; j<5; j++) { //가로
				if(i<=j && i+j<10)
					System.out.print("*");
				else
					System.out.print(" ");
			}
			
			System.out.println();
		}
	}

}

 

 

 

나비별 푸는법


 

 

I = 세로 / J = 가로

 

나비별 모양

 

좌푯값?으로 모두 나타내면 저런 그림이 된다. 괄호 안의 의미는

(J,I) = (가로,세로) 좌푯값이다.

 

 

여기서, J+I = 10과 J=I의 의미를 먼저 보자

 

 

나비별을 수학적 그래프로 나타냈을때의 모습인데

여기서 저 식들의 정체를 알수 있다.

 

I=J 는 보다시피 같이 증가하고 있기 때문에 I=J라는 식이 나온것이고,

J+I = 10는 J와I가 모두 10에서 만나기 때문에 나온 식이다.

(이건 별찍기에 사용되는 식은 아니다)

 

 

 

 

그리고 그 다음에 색이 칠해져있지 않은 윗부분을 먼저 보면,

모두 J의값이 I보다 큰걸 알수 있기 때문에 J>I 가 나오고

그 둘을 더한값이 모두 10이 넘지 않기 때문에 J+I<10이 나오게 된다.

 

 

이어서 밑부분을 보면

I값이 J값보다 모두 크기 때문에 J<I 이고,

그 둘의 합이 10을 넘기 때문에 J+I>10이 나온다.

 

 

 

 

이렇게 해서 수식을 정리하자면 위 영역은

if (j>i && i+j<10) 이 되고

아래 영역은 if (j<i && i+j>10) 이 나온다

공백 부분을 해결했으니 나머지를 모두 별로 채운다면 나비모양이 나오게 된다.

 

 

 

 

 

 

 

 

 

 

 

 

✏️성적 관리 프로그램 만들기 - 3,4는 오늘 구현이 아니에요

 

 

package ex3.control;
import java.util.Scanner;
public class Program {
	public static void main(String[] args) {
		
		boolean run = true;//첫화면 while문을 실행하기 위한 변수
		int avg=0; //성적관리에서 원하는 메뉴로 가기위한 값을 담을 변수
		
		
		int kor1= 0;
		int kor2= 0;
		int kor3= 0;
		//성적 점수 변수들
		
		
		out://while문 탈출을 위한 라벨문
		while(run)//true값을 갖고있는 run변수라서, 무한히 실행 된다
		{
			Scanner scan = new Scanner(System.in);
			//사용자의 입력값을 받기 위한 스캐너
			
			System.out.println("┌────────────────────────┐");
			System.out.println("│          성적관리        │");
			System.out.println("└────────────────────────┘");
			System.out.println("1.성적입력\n2.성적 출력\n3.성적 저장\n4.성적 로드\n5.종료\n입력>");
	
			avg = scan.nextInt();
			//입력한 값이 avg로 저장된다
			
			while(!(1<=avg && avg<6)) { ////메뉴인,1~5 이상이 !아니면 while문이 종료된다
				System.out.println("잘못된 입력입니다.\n다시 입력해주세요.");
				//메뉴인,1~5 이상을 입력했을때에 나오는 에러메세지
				avg = scan.nextInt();
				//정상값들을 다시 입력받기 위한..
			} 

	
		
		
		switch(avg) { //avg에 들어온 값들에 의해 실행되는 스위치문
			case 1:
				System.out.println("┌────────────────────────┐");
				System.out.println("│          성적입력        │");
				System.out.println("└────────────────────────┘");
				System.out.println("국어 성적을 입력하세요");
				System.out.print("시험 1> ");
				kor1 = scan.nextInt();
				System.out.print("시험 2> ");
				kor2 = scan.nextInt();
				System.out.print("시험 3> ");
				kor3 = scan.nextInt();
				//각기다른 변수에 맞게 입력값들을 저장해준다
				break;
				//각 케이스문마다 꼭 필요한 브레이크문
			case 2:	
				System.out.println("┌────────────────────────┐");
				System.out.println("│          성적출력        │");
				System.out.println("└────────────────────────┘");
				System.out.println("    국어");
				System.out.println(kor1);
				System.out.println(kor2);
				System.out.println(kor3);
				//위에서 입력받은 각 성적들을 출력
				break;
			case 5:
				System.out.println("프로그램을 종료합니다 안뇨옹~");
				break out;//라벨문
			}
		
		}
	
	}
}

 

 

 

 

 

 

 

728x90