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:
댓글 달기