티스토리 뷰
#include <stdio.h>
#define ARR_ROW 30
#define ARR_COL 30
#define ARR_INIT 65535
void printArr(int arr[][ARR_COL]); // 배열의 내용을 출력하는 함수
void snail(int arr[][ARR_COL]); // snail 함수
int main()
{
int array[ARR_ROW][ARR_COL] = {0};
snail (array);
printArr(array);
return 0;
}
void printArr(int arr[][ARR_COL])
{
int i = 0, j = 0;
for(i = 0; i < ARR_ROW; i++)
{
for(j = 0 ; j < ARR_COL; j++) printf("%3d ", arr[i][j]);
printf("\n");
}
}
void snail(int arr[][ARR_COL])
{
int i = 0, j = 0; // 반복문에서의 인덱스
int cur_x = 0, cur_y = 0; // 현재의 배열 위치
/* 값의 진행 방향에 대한 정보
* dir[0] 상(아래->위)
* dir[1] 하(위->아래)
* dir[2] 좌(우->좌)
* dir[3] 우(좌->우) */
int dir[4] = {0,0,0,1}; // 초기 진행 방향은 좌->우
// 파라메터로 넘어온 배열 초기화 := 모든 값은 ARR_INIT로 세팅
for(i = 0; i < ARR_ROW; i++)
for(j = 0; j < ARR_COL; j++) arr[i][j] = ARR_INIT;
// 배열에 값을 입력하는 부분
for(i = 1; i <= ARR_ROW*ARR_COL; i++)
{
// i값을 배열의 현재 위치에 삽입, i값은 1~25의 값에 해당
arr[cur_x][cur_y] = i;
// 현재가, 아래에서 위로 진행하고 있는 경우
if(dir[0] == 1)
{
/* 방향 전이가 이루어지는 경우 확인
* cur_x-1 < 0 : 다음 증가 위치가 배열 범위에서 벗어났는지 확인
* arr[cur_x-1][cur_y] <= i : 이미 지나쳐온 부분인지 확인 */
if(cur_x-1 < 0 || arr[cur_x-1][cur_y] <= i)
{
dir[0] = 0;
dir[3] = 1;
cur_y++;
}
// 계속 진행
else
cur_x--;
}
else if(dir[1] == 1)
{
// 방향 전이가 이루어지는 경우
if(cur_x+1 >= ARR_COL || arr[cur_x+1][cur_y] <= i)
{
dir[1] = 0;
dir[2] = 1;
cur_y--;
}
// 계속 진행
else
cur_x++;
}
else if(dir[2] == 1)
{
// 방향 전이가 이루어지는 경우
if(cur_y-1 < 0 || arr[cur_x][cur_y-1] <= i)
{
dir[2] = 0;
dir[0] = 1;
cur_x--;
}
// 계속 진행
else
cur_y--;
}
else if(dir[3] == 1)
{
// 방향 전이가 이루어지는 경우
if(cur_y+1 >= ARR_COL || arr[cur_x][cur_y+1] <= i)
{
dir[3] = 0;
dir[1] = 1;
cur_x++;
}
// 계속 진행
else
cur_y++;
}
}
}
#define ARR_ROW 30
#define ARR_COL 30
#define ARR_INIT 65535
void printArr(int arr[][ARR_COL]); // 배열의 내용을 출력하는 함수
void snail(int arr[][ARR_COL]); // snail 함수
int main()
{
int array[ARR_ROW][ARR_COL] = {0};
snail (array);
printArr(array);
return 0;
}
void printArr(int arr[][ARR_COL])
{
int i = 0, j = 0;
for(i = 0; i < ARR_ROW; i++)
{
for(j = 0 ; j < ARR_COL; j++) printf("%3d ", arr[i][j]);
printf("\n");
}
}
void snail(int arr[][ARR_COL])
{
int i = 0, j = 0; // 반복문에서의 인덱스
int cur_x = 0, cur_y = 0; // 현재의 배열 위치
/* 값의 진행 방향에 대한 정보
* dir[0] 상(아래->위)
* dir[1] 하(위->아래)
* dir[2] 좌(우->좌)
* dir[3] 우(좌->우) */
int dir[4] = {0,0,0,1}; // 초기 진행 방향은 좌->우
// 파라메터로 넘어온 배열 초기화 := 모든 값은 ARR_INIT로 세팅
for(i = 0; i < ARR_ROW; i++)
for(j = 0; j < ARR_COL; j++) arr[i][j] = ARR_INIT;
// 배열에 값을 입력하는 부분
for(i = 1; i <= ARR_ROW*ARR_COL; i++)
{
// i값을 배열의 현재 위치에 삽입, i값은 1~25의 값에 해당
arr[cur_x][cur_y] = i;
// 현재가, 아래에서 위로 진행하고 있는 경우
if(dir[0] == 1)
{
/* 방향 전이가 이루어지는 경우 확인
* cur_x-1 < 0 : 다음 증가 위치가 배열 범위에서 벗어났는지 확인
* arr[cur_x-1][cur_y] <= i : 이미 지나쳐온 부분인지 확인 */
if(cur_x-1 < 0 || arr[cur_x-1][cur_y] <= i)
{
dir[0] = 0;
dir[3] = 1;
cur_y++;
}
// 계속 진행
else
cur_x--;
}
else if(dir[1] == 1)
{
// 방향 전이가 이루어지는 경우
if(cur_x+1 >= ARR_COL || arr[cur_x+1][cur_y] <= i)
{
dir[1] = 0;
dir[2] = 1;
cur_y--;
}
// 계속 진행
else
cur_x++;
}
else if(dir[2] == 1)
{
// 방향 전이가 이루어지는 경우
if(cur_y-1 < 0 || arr[cur_x][cur_y-1] <= i)
{
dir[2] = 0;
dir[0] = 1;
cur_x--;
}
// 계속 진행
else
cur_y--;
}
else if(dir[3] == 1)
{
// 방향 전이가 이루어지는 경우
if(cur_y+1 >= ARR_COL || arr[cur_x][cur_y+1] <= i)
{
dir[3] = 0;
dir[1] = 1;
cur_x++;
}
// 계속 진행
else
cur_y++;
}
}
}
'IT > 프로그래밍' 카테고리의 다른 글
[c언어] scanf()함수로 gets()효과내기 (0) | 2007.07.06 |
---|---|
QMap에서 데이터 찾을 때 쓰이는 방법 (0) | 2007.07.06 |
'const char [12]'에서 'LPCWSTR'(으)로 변환하는 방법 (1) | 2007.07.06 |
윈도우 소켓(Winsock) 프로그래밍 (0) | 2007.07.06 |
정적, 공유, 동적 라이브러리 하우투 (0) | 2007.07.06 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- 지루박멸연구센타
- 열정의 힘을 믿는다
- Le4rN TO Cr4cK
- 디버깅에관한모든것(DebugLab)
- sysinternals
- FoundStone
- hashtab
- 보안-coderant
- 디바이스드라이버 개발자 포럼
- dualpage.muz.ro
- osronline.com - 드라이버 관련 정보 사이트
- NtInternals - NativeAPI Refere…
- pcthreat - spyware 정보 제공
- rootkit.com - 루트킷 관련 정보
- www.ntinternals.net
- WINE CrossRef. - source.winehq…
- tuts4you
- hex-rays
- idapalace
- idefense
- immunityinc
- threatexpert
- hdp.null2root.org
- www.crackstore.com
- crackmes.de
- www.who.is
- www.cracklab.ru
- community.reverse-engineering.…
- video.reverse-engineering.net
- SnD
- 클레이 키위
- reversengineering.wordpress.co…
- www.openrce.org
- www.woodmann.com
- PEID.Plusins.BobSoft
- roxik.com/pictaps/
- regexlib.com
- spyware-browser.com
- www.usboffice.kr
- regulator
- www.txt2re.com
- ietab.mozdev.org
- zesrever.xstone.org
- www.heaventools.com/PE-file-he…
- www.heaventools.com
- www.innomp3.com
- 울지않는벌새
- exetools.com-forum
- exetools.com
- utf8 conv
- robtex - IP trace
- onsamehost - same IP sites
- JpopSuki
- jsunpack.jeek.org
- wepawet.iseclab.org
- www.jswiff.com
- www.hackeroo.com
- winesearcher.co.kr
- khpga.org
- malwareurl.com
- anubis.iseclab.org
- www.crummy.com-eautifulSoup
- malwarebytes.org/forums
- bbs.janmeng.com
- blackip.ustc.edu.cn
- eureka.cyber-ta.org
- exploit-db.com
TAG
- ROA
- CriticalSection
- ElasticSearch
- 매매가격지수
- 미국주식
- 신한저축은행
- ubuntu
- Pivot
- 주택구매력지수
- 사회간접자본
- 주식
- hai
- 군함도
- ChatGPT
- 레고랜드
- systemd
- logrotate
- 공공인프라
- SBI저축은행
- 다올저축은행
- 맥쿼리인프라
- O365
- 전세매매지수
- PIR
- 시스템트래이딩
- INVOICE
- 실시간트래이딩
- 주식트래이딩
- 피봇
- 자동트래이딩
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함