소ê°� ¶
마ì�Œì—� 들지 않는다. 아무런 계íš�ì—†ì�´ 무턱ë�°ê³ 코딩부터 í–ˆë�”니 ì�´ëž˜ì €ëž˜ ì§€ì €ë¶„ê²Œ ë�˜ì—ˆë‹¤.
아무래ë�„ 나ë§�ê³ ë‹¤ë¥¸ì‚¬ëžŒì�€ ì ˆëŒ€ë¡œ 알아볼수 ì—†ì�„듯.. --;;;;;;
아무래ë�„ 나ë§�ê³ ë‹¤ë¥¸ì‚¬ëžŒì�€ ì ˆëŒ€ë¡œ 알아볼수 ì—†ì�„듯.. --;;;;;;
최초 ë²„ì „ ¶
~c
#include <stdio.h>
#include <stdlib.h>
#define NORTH 1
#define NORTH_WEST 2
#define SOUTH_WEST 3
#define SOUTH 4
#define SOUTH_EAST 5
#define CAL(x) ((3*x*x)+(3*x)+1)
struct coordinate{
int x;
int y;
} posi;
void move_posi(struct coordinate *, int);
int main(void)
{
int willy, row, seq, i;
printf("윌리ì�˜ 좌표계를 ìž…ë ¥í•˜ì„¸ìš” : ");
while(scanf("%d", &willy)){
if(!willy) exit(0);
posi.x = 0; posi.y = 0;
for (row=0; CAL(row) < willy; row++) move_posi(&posi, SOUTH_EAST);
willy -= CAL(row);
for(seq=NORTH; willy; seq++)
for(i=0; i < row && willy; i++, willy++) move_posi(&posi, seq);
if(willy == 0)
printf("(%d, %d)\n\n", posi.x, posi.y);
printf("윌리ì�˜ 좌표계를 ìž…ë ¥í•˜ì„¸ìš” : ");
}
return 0;
}
void move_posi(struct coordinate *posi, int direc)
{
switch(direc)
{
case NORTH:
posi->y--;
break;
case NORTH_WEST:
posi->x--;
break;
case SOUTH_WEST:
posi->x--;
posi->y++;
break;
case SOUTH:
posi->y++;
break;
case SOUTH_EAST:
posi->x++;
break;
default:
puts("ì •ìƒ�ì �ì�¸ ìž‘ë�™ì�´ 아니므로 종료합니다.");
exit(1);
}
}
코멘트 ¶
좀� 좋� 방향� 있으시면 한수 가르� 주세요
for (row=0; CAL(row) < willy; row++)ì—�서 매번 for문ì�´ ë�Œë•Œë§ˆë‹¤ CAL(row)로 계산하지 ë§�ê³ ë¯¸ë¦¬ 계산ë�œ ê°’ì�„ 변수ì—� ì €ìž¥í•´ë†“ê³ ë¹„êµ�하는게 ë�” 좋ì�„듯. - ê³ ì¤€ì˜�
for (row=0; CAL(row) < willy; row++)ì—�서 매번 for문ì�´ ë�Œë•Œë§ˆë‹¤ CAL(row)로 계산하지 ë§�ê³ ë¯¸ë¦¬ 계산ë�œ ê°’ì�„ 변수ì—� ì €ìž¥í•´ë†“ê³ ë¹„êµ�하는게 ë�” 좋ì�„듯. - ê³ ì¤€ì˜�










