/* 심심해서 만들어 본 야구 게임 */
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define MAX 50
#define COT 25
typedef struct list* list_p;
typedef struct list {
int a[MAX];
int s;
int b;
int o;
list_p next;
};
list_p head=NULL;
void rand_su(int num,int *p);
void input_su(int num,int *p);
int check_su(int num,int *o,int *p);
void add_list(int *p,int,int,int,int);
void show_list(int num);
void main()
{
int num,re[MAX],input[MAX],count=1,s;
printf("********************************\n");
printf("* !!야구 게임을 시작 합니다 !! *\n");
printf("********************************\n");
printf("몇자리 게임을 하겠습니까? ");
scanf("%d",&num);
rand_su(num,re); // 랜덤 수를 입력 합니다.
while(1)
{
printf("\n\n%d 번째 시도 입니다 . %d / %d \n",count,count,COT);
input_su(num,input);
s=check_su(num,re,input);
if(count>=COT)
{
printf("\n시도 안에 맞추지 못하였습니다.\n");
break;
}
else if(s==3) printf("\n\n 축하합니다!! 야구 게임을 성공 하였습니다 \n\n");
count++;
}
//
}
void show_list(int num)
{
int i,count=0;
list_p p;
p=head;
printf("\n###################################\n");
printf(" 입력 결과 리스트 ");
printf("\n###################################\n");
for(;p!=NULL;p=p->next)
{
printf("\n\n%d : 번째 입력 결과 \n",++count);
for(i=0;i<num;i++)
{
printf("%d ",p->a[i]);
}
printf("Strink : %d Ball : %d Out %d \n",p->s,p->b,p->o);
}
}
int check_su(int num,int *q,int *p)
{
int i,j,out,s=0,o=0,b=0;
for(i=0;i<num;i++)
{
for(j=0;j<num;j++)
{
if(*(q+i) == *(p+i))
{
s++;
j=num;
}
else if(*(q+i) == *(p+j))
{
b++;
j=num;
}
else
{
out++;
}
}
if(out==num)
{
o++;
}
}
add_list(p,s,b,o,num); // 링크드 리스트에 항목을 추가
printf("\n\n입력 값 :");
for(i=0;i<num;i++)
{
printf(" %d ",*(p+i));
}
printf("\nStrink : %d Ball : %d Out : %d \n",s,b,o);
return s;
}
void add_list(int *pt,int s,int b,int o,int num)
{
int i=0;
list_p p,temp;
p=head;
temp=(list_p)malloc(sizeof(struct list));
for(i=0;i<num;i++)
{
temp->a[i]=*(pt+i);
}
temp->s=s;
temp->b=b;
temp->o=o;
temp->next=NULL;
if(p==NULL)
{
head=temp;
}
else
{
for(;p->next!=NULL;p=p->next);
p->next=temp;
}
}
void input_su(int num,int *p)
{
int i,a;
for(i=0;i<num;i++)
{
printf("\n%d 번째 값을 입력 하세요 ? ( -1 를 입력 하면 입력 했던 리스트를 보여줍니다)",i+1);
scanf("%d",&a);
if(a==-1)
{
show_list(num);
i--;
}
else if(a>10 || a<0)
{
printf("\n값은 0과 9사이 값만 입력 하실 수 있습니다.\n");
i--;
}
else *(p+i)=a;
}
}
void rand_su(int num,int *p) // 랜덤 수를 입력 합니다.
{
int i;
printf("랜덤한 수를 입력합니다.");
srand(time(NULL));
for(i=0;i<num;i++)
{
*(p+i)=rand()%10;
//printf("\n %d",*(p+i));
}
}
질문은 알아서 ....