C언어 동적할당을 이용한 빙고에 오류가 생깁니다.
글쓴이: eunjong147 / 작성시간: 토, 2016/05/14 - 5:08오후
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int i,j;
void print(int **A, int a)
{
for(i=0;i<a;i++)
{
for(j=0;j<a;j++)
{
if(A[i][j]==0)
{
printf("%5c",'*');
continue;
}
printf("%5d", A[i][j]);
}
printf("\n\n\n");
}
}
void pos(int **A, int a)
{
int K=1;
while(1)
{
i=rand()%a;
j=rand()%a;
if(A[i][j]==0)
{
A[i][j]=K++;
}
if(K==(a*a))
break;
}
}
void check(int **A,int **B,int a, int b)
{
for(i=0;i<b;i++)
{
for(j=0;j<b;j++)
{
if(A[i][j]==a)
A[i][j]=0;
if(B[i][j]==a)
B[i][j]=0;
}
}
}
int victory(int **A,int v, int d)
{
int x=0,z=0,a=0,b=0,c;
c=d-1;
v=0;
for(i=0;i<d;i++)
{
for(j=0;j<d;j++)
{
if(A[i][j]==0)
x++;
if(A[j][i]==0)
z++;
if(x==5)
v++;
if(z==5)
v++;
}
x=0,z=0;
if(A[i][i]==0)
a++;
if(A[i][c--]==0)
b++;
}
if(a==d)
v++;
if(b==d)
v++;
return v;
}
int main(void)
{
int v,a,b,c;
int ** A = (int **)malloc(sizeof(int*)*3);
int ** B = (int **)malloc(sizeof(int*)*3);
printf("빙고판 크기: ");
scanf("%d", &c);
A = (int **)realloc(A, sizeof(int*)*c);
B = (int **)realloc(B, sizeof(int*)*c);
for(b=0;b<a;b++)
{
A[b] = (int *)malloc(sizeof(int)*c);
B[b] = (int *)malloc(sizeof(int)*c);
}
srand((unsigned)time(NULL));
pos(A,c);
pos(B,c);
while(1)
{
print(A,c);
printf("Your turn : ");
scanf("%d", &a);
check(A,B,a,c);
a=rand()%25+1;
printf("COM's turn : %d \n", a);
check(A,B,a,c);
v=victory(A,v,c);
if(v>=3)
{
printf("you win");
break;
}
v=victory(B,v,c);
if(v>=3)
{
printf("COM win");
break;
}
printf("--------------------------------------------------\n");
}
return 0;
}Forums:


댓글 달기