No older revisions available
No older revisions available
~cpp
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
void make_number(char *p); /* 임의 세자리 숫자를 생성하는 함수 */
void check_num(char *dest, char *src); /* 입력된 숫자와 비밀숫자를 맞춰보는 함수 */
void main() {
char hidden_num[3] = {'\0',};
char number_log[10][4] = {'\0',};
int i;
char num[3];
clrscr();
// make hidden_number;
make_number(hidden_num);
for (i=0; i<10; i++) {
printf("%d input number : ", i+1);
scanf("%s", &num);
if (num[0] == num[1] || num[0] == num[2] || num[1] == num[2])
{
printf(" 중복된 숫자를 입력하시면 안됩니다. 다시 입력해주세요.\n");
i--;
}
else strncpy(number_log[i], num, 3);
//printf("%d : %s\n", i, number_log[i]);
check_num(number_log[i], hidden_num);
}
printf("You lose~\nThe answer is %c%c%c", hidden_num[0], hidden_num[1], hidden_num[2]);
}
void make_number(char *p) {
int number[3];
int i, temp_i, num, j;
randomize();
printf("Make number..\n");
for(i=0; i<3; i++) {
temp_i=i;
num = rand() % 10;
if (i<1) number[i] = num;
else
for (j=0; j<temp_i; j++)
if (number[j]==num) i--;
else number[i] = num;
p[i] = (char) number[i] + 48;
}
//printf("%c %c %c \n", p[0], p[1], p[2]);
//printf("%d %d %d \n", number[0], number[1], number[2]);
}
void check_num(char *dest_num, char *src_num) {
int i, j, k;
int strike = 0;
int ball = 0;
for (i=0; i<3 ;i++ )
{
for (j=0; j<3 ;j++ ) {
if (dest_num[i] == src_num[j])
if (i == j) strike++;
else ball++;
}
}
if (strike == 3) {
printf("You win~!!\n");
exit(-1);
}
else
if (strike == 0 && ball == 0)
printf("out!!\n");
else printf("%dstrike %dball\n", strike, ball);
}
/* 지화니네 집에서 할일없이 뒹굴거리다가 ZeroWiki에서 보고 함 해봤음 --v
음.. 근데 역시 플밍을 안하다가 하니까 이것도 어렵넹..
이것저것 해봐야겠당~ editplus 사용해도 꽤 괜찮넹.. 답답한 도스환경에서 해방~
근데 스팩이 좀 이상한거 아닌가.. 중복된 숫자가 나오면 풀 수 있는건가? --a
ex) 223 이라고 나오면 쉽게 풀 수 있을까? 흐음..
*/