Programming/C, C++

코딩 자율 학습단 9일차 - 5장 프로젝트

주눅 2024. 7. 1. 18:01

5장도 벌써 끝이 보인다...

조금만 더 힘내자 @.@

 


 

이번 시간에는 지금까지 배운 함수의 내용들을 활용해

'비밀번호 마스터' 프로젝트를 진행한다.

 

'비밀번호 마스터'란 정수 2개를 곱한 값을 맞히는 프로그램으로,

문제가 나오고 정답을 맞히면 '성공', 틀리면 '실패'를 출력한다.

 

문제를 맞힐 때마다 다음 문제가 어려워지고, 문제를 모두 푼 후에는 맞힌 개수를 알려준다.

문제는 총 5개로 지정한다.

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int getRandomNumber(int level); //함수 선언
void showQuestion(int level, int num1, int num2); //함수 선언 
void success();
void fail();

int main(void) {
	srand(time(NULL)); //난수 초기화

	int count = 0;
	for (int i = 1; i <= 5; i++) {
		int num1 = getRandomNumber(i);
		int num2 = getRandomNumber(i);

		// printf("%d x %d ? \n", num1, num2); //문제 출제

		showQuestion(i, num1, num2);

		int answer = -1;
		scanf_s("%d", &answer);

		if (answer == -1) {
			printf("\n프로그램을 종료합니다.\n");
			// break;
			exit(0);
		}
		else if (answer == num1 * num2) {
			success();
			count++;
		}
		else {
			fail();
		}
	}

	printf("\n\n비밀번호를 %d개 맞췄습니다.\n", count);
	return 0;
}

int getRandomNumber(int level) {
	return rand() % (level * 9) + 1;
}

void showQuestion(int level, int num1, int num2) {
	printf("\n\n\n########## %d번째 비밀번호 ##########\n", level);
	printf("\n\t%d x %d ?\n\n", num1, num2);
	printf("###################################\n");
	printf("\n비밀번호를 입력하세요.(종료를 원하면 -1 입력) >> ");
}

void success() {
	printf("\n >> GOOD! 정답입니다.\n");
}

void fail() {
	printf("\n >> 탈락! 틀렸습니다.\n");
}

실행 결과

 

문제가 갑자기 너무... 고능해져서 놀랐다 (ㅋㅋ)

 

이 코드에서 getRandomNumber()는 전달값과 반환값이 있는 함수,

showQuestion()는 전달값은 여러 개지만 반환값은 없는 함수, 

success()와 fail()은 반환값도, 전달값도 없는 함수다.

 

+) exit() 함수

exit() 함수는 현재 실행중인 프로그램을 종료하는 함수다.

소괄호 안에 0을 넣으면 정상 종료, 다른 숫자를 넣으면(통상적으로 1) 오류 종료다.

exit() 함수는 stdlib.h에 포함된 함수로, 해당 파일을 프로그램에 추가해야만 사용할 수 있다.

 


 

내일도 오늘처럼 두 개씩 진도 나가면

수요일엔 원래 진도를 따라잡을 수 있다... ㅠㅠ

하루 하나씩, 주말에 따라잡아도 되는 일이고...

 

분명 다 한번 쯤 들어본 내용인데 쫓아가기 왜 이렇게 힘든 건지

다음부턴 어디 갈 일 생기더라도 꼭 노트북이랑 책을 챙겨 가야겠다...

OTL