일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 포인터
- 선택
- 알고리즘
- C언어
- 문자열
- string
- 정렬
- 공백
- Windows API
- 3차원 배열
- 테트리스
- 버블
- 삽입
- 함수
- 커서
- 오목#함수#gotoxy#금수#알고리즘#2차원#배열#실무#프로젝트
- 구현
- crud
- 연결리스트
- 이진탐색#binary_search
- 배열
- 콘솔
- 파일입출력
- 구조체
- scanf
- C
- Time
- 난수
- 셀
Archives
- Today
- Total
C언어 알고리즘 정리 및 실무 프로젝트
C언어 이중 for문과 배열을 이용한 달팽이 배열 알고리즘 본문
반응형
전체의 큰 for문 안에 각기 다른 조건 4개를 넣어줌으로써 기능별로 세분화해서 이해할 수 있도록 구성하였습니다.
#include <stdio.h>
int main() {
int count = 0; // 숫자 카운트 (V)
int num[6][6]; // 달팽이 배열
int a = 1; // 가로 행 증가 변수
int b = 1; // 세로 열 증가 변수
int c = 1; // 가로 행 감소 변수
int d = 1; // 세로 열 감소 변수
for (int j = 1; j <= 9; j++) { // 전체 9번 반복
if (j % 4 == 1) { // j가 1,5,9일 때
for (int k = a; k <= 6 - a; k++) { // 가로 행 증가일 경우
count += 1;
num[a][k] = count;
}
a++;
}
else if (j % 4 == 2) { // j가 2,6일 때
for (int k = b + 1; k <= 6 - b; k++) { // 세로 열 증가일 경우
count += 1;
num[k][6 - b] = count;
}
b++;
}
else if (j % 4 == 3) { // j가 3,7일 때
for (int k = 5 - c; k >= c; k--) { // 가로 행 감소일 경우
count += 1;
num[6 - c][k] = count;
}
c++;
}
else { // j가 4,8일 때
for (int k = 5 - d; k >= d + 1; k--) { // 세로 열 감소일 경우
count += 1;
num[k][d] = count;
}
d++;
}
} // 최외곽 for문
for (int e = 1; e <= 5; e++) { // 달팽이 구조로 넣어진 값들을 출력한다.
for (int f = 1; f <= 5; f++) {
printf("%-2d ", num[e][f]);
}
printf("\n");
}
return 0;
}
반응형
'C언어 알고리즘' 카테고리의 다른 글
C언어의 병합정렬 (merge_sort) 알고리즘 (0) | 2022.06.25 |
---|---|
C언어 포인터를 활용한 문자열 관련 함수(strcpy, strcat, strcmp, strncmp, strlen) 직접 구현하기 (4) | 2022.05.20 |
C언어 연결리스트 구현(포인터에 대한 완벽 이해) (0) | 2022.04.20 |
rand()를 이용한 로또 추출 알고리즘과 정렬 (0) | 2022.04.20 |
C언어의 선택정렬, 버블정렬, 삽입정렬, 셸 정렬 알고리즘 (Call by Reference 포인터 기능) (2) | 2022.04.20 |
Comments