도어락 비밀번호를 입력받고 확인하는 프로그램입니다.
마지막 5자리 입력이 특정 패턴과 일치하는지 확인하고, 그 결과에 따라 문을 여는지 경고를 출력합니다.
즉,
한 줄에 하나씩 버튼을 입력 받고 4 번째 입력부터는 마지막 입력된 4 개의 버튼을 출력한다
‘*’ 이 입력되면 문이 열리는지 열리지 않는지 출력하시오 문이 열리면 “door open!”, 열리지 않으면 “wrong 를 출력
이를 C 언어로 구현하는 예제 입니다.
#include <stdio.h>
#include <string.h>
#define _CRT_SECURE_NO_WARNINGS
#define PASSCODE "9876*"
int main() {
char input[1000]; // 임의의 긴 입력을 저장할 배열
char lastFive[6] = ""; // 마지막 5개의 입력을 저장할 배열
int inputIndex = 0; // 입력된 전체 문자의 인덱스
char button; // 입력된 버튼
while (1) {
printf("button>>");
button = getchar();
while (button == '\n') { // 줄바꿈 문자 무시
button = getchar();
}
input[inputIndex++] = button;
// 마지막 5개의 입력을 업데이트
if (inputIndex >= 5) {
lastFive[0] = input[inputIndex - 5];
lastFive[1] = input[inputIndex - 4];
lastFive[2] = input[inputIndex - 3];
lastFive[3] = input[inputIndex - 2];
lastFive[4] = input[inputIndex - 1];
lastFive[5] = '\0'; // 문자열 종료
}
// 4번째 입력부터 마지막 4개의 입력을 출력
if (inputIndex >= 4) {
printf("%c%c%c%c\n", input[inputIndex - 4], input[inputIndex - 3], input[inputIndex - 2], input[inputIndex - 1]);
}
// '*'이 입력되면 비밀번호 확인
if (button == '*') {
if (strcmp(lastFive, PASSCODE) == 0) {
printf("door open!\n");
break; // 프로그램 종료
}
else {
printf("wrong\n");
break; // 프로그램 종료
}
}
}
return 0;
}
이 프로그램은 사용자가 입력하는 버튼을 한 줄씩 입력받고, 마지막 5개의 입력이 9876*과 일치하는지 확인합니다.
설명:
- input 배열은 모든 입력을 저장합니다.
- lastFive 배열은 마지막 5개의 입력을 저장합니다.
- inputIndex는 입력된 전체 문자의 인덱스입니다.
- button 변수는 현재 입력된 버튼을 저장합니다.
각 입력이 들어올 때마다 input 배열에 저장하고,
입력된 문자의 개수가 5 이상일 경우 lastFive 배열을 업데이트합니다.
입력된 문자의 개수가 4 이상일 경우 마지막 4개의 문자를 출력합니다.
마지막으로,
'*'가 입력되면 lastFive 배열과 PASSCODE를 비교하여 문을 열지,
경고 메시지를 출력할지 결정합니다.
배열을 사용하지 않는다면 ....
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
int main() {
char input1 = '\0', input2 = '\0', input3 = '\0', input4 = '\0', input5 = '\0';
char button;
while (1) {
printf("button>>");
button = getchar();
while (button == '\n') { // 줄바꿈 문자 무시
button = getchar();
}
// 최신 입력을 업데이트
input1 = input2;
input2 = input3;
input3 = input4;
input4 = input5;
input5 = button;
// 4번째 입력부터 마지막 4개의 입력을 출력
if (input2 != '\0') {
printf("%c%c%c%c\n", input2, input3, input4, input5);
}
// '*'이 입력되면 비밀번호 확인
if (button == '*') {
if (input1 == '9' && input2 == '8' && input3 == '7' && input4 == '6' && input5 == '*') {
printf("door open!\n");
break; // 프로그램 종료
}
else {
printf("wrong\n");
break; // 프로그램 종료
}
}
}
return 0;
}
'C' 카테고리의 다른 글
약수들의 합과 평균 (0) | 2024.06.05 |
---|---|
안이 비어 있는 삼각형 그리기 (0) | 2024.06.05 |