:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
08/03/30 23:54
while문 안이 짝수만 들어오게 되어있는 것 같은데..? OR니 또 이상하구.. while 문 안의 조건문이??
pgr 에는 C 언어 고수님들 많으시니 곧 답을 얻으실겁니다. ^^
08/03/30 23:54
so < 1 && so >= 10 이 구문이 문제내요. or 처리하세요. 그 어떤 정수도 1보다 작으면서 10보다 같거나 클 수 없잖아요.
08/03/31 00:23
일단 제 컴퓨터에서는 배열값 초기화를 하든 안하든 9에서만 팅기고 나머지는 값이 출력 됩니다. 근데 마방진이 안만들어지네요. 값도 30 이상들만 출력되고... 처리부분에 문제가 있는거 같습니다.
08/03/31 00:38
아.. 중간쯤에 데이터 이미 차지하고 있는 공간일 경우 입력이 이상해 지네요..;; x가 so값보다 2 더 클때도 있고..;;
어렵네요..;;
08/03/31 00:51
#include <stdio.h>
void main() int bae[10][10]; int so, i, j, p; do { printf("몇행의 마방진을 만들겠습니까? ( 1~9사이 홀수만 입력) "); scanf("%d", &so); for (i=0; i<so; i++) for (j=0; j<so; j++) { bae[i][j] = 0; } i = 0; j = (int)(so/2); bae[i][j] = 1; for (p=2; p<= so * so; p++) i = i - 1; j = j + 1; if ((i<0) && (j >= so)) { i = i + 2; j = j - 1; if (i < 0) i = so - 1; if (j >= so) j = 0; if (bae[i][j] != 0) i = i + 2; j = j - 1; bae[i][j] = p; } for (i=0; i<so; i++) for(j=0; j<so; j++) { printf ("%d\t",bae[i][j]); printf ("\n"); } } 일단은 다음에서 PHP소스로 되어있는걸 C언어로 바꿨습니다. ㅡ.ㅡ;; 이건 제대로 작동하네요. 참고만 하세요.
08/03/31 00:52
그리고 30이상만 출력되는것은 printf("3%d", bae[i][j]); 이거 때문이네요 ㅡ.ㅡ; printf("%d\t", bae[i][j]); 이걸로 바꾸세요.
08/03/31 01:29
x+=5, y-=5가 아니라 x+=so, y-=so구요. y=y-1에 의해서 y가 음수가 되거나, x=x+2에 의해서 x가 so를 넘어가버릴수가 있으니까 한번 더 체크해줘야 해요
for( ; x<0; ) x+=so; for( ; y>so-1; ) y-=so; if(bae[x][y] != 0) y = y-1; x = x+2; for( ; y<0; ) y+=so; for( ; x>so-1; ) x-=so; 가운데 부분을 위처럼 바꾸시면 됩니다
08/03/31 01:42
아~~ 마방진 중에 가장 오른쪽 가장 위칸이 x<0, y>=so 이거를 둘다 만족해서 잘 안되는 거였네요.
기존에 데이터가 있는 바람에 y가 -1이 되버리게 된다는..-_-;; 하루빨리님 올려주신 소스처럼 x<0, y>=so 둘다 만족할 때 대처를 따로 지정해야 겠네요. 그럼 늦은 밤인데 도와주신 분들 감사드립니다. 좋은 꿈 꾸세요~~
|