달팽이 배열
정사각형
직사각형
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #include <stdio.h> int main(void){ int arr_size; printf("ex 1) "); scanf("%d", &arr_size); int arr[100][100] = { 0 }; int i = 0, j = 0, num = 1, counter = 0; int direction = 0;//0 for right side, 1 for down side, 2 for left side, 3 for up side while (num <= arr_size*arr_size){ arr[i][j] = num; if (direction == 0){ if (arr[i][j + 1] == 0 && j < arr_size-1){ j++; counter = 0; } else{ counter++; direction = 1; i++; } }//오른쪽으로 진행 else if (direction == 1){ if (arr[i + 1][j] == 0 && i < arr_size-1){ i++; counter = 0; } else{ counter++; direction = 2; j--; } }//아래쪽으로 진행 else if (direction == 2){ if (arr[i][j-1] == 0 && j > 0){ j--; counter = 0; } else{ counter++; direction = 3; i--; } }//왼쪽으로 진행 else if (direction == 3){ if ( arr[i - 1][j] == 0 && i > 0){ i--; counter = 0; } else{ counter++; direction = 0; j++; } }//위쪽으로 진행 num++; } for (i = 0; i<arr_size; i++){ for (j = 0; j<arr_size; j++){ printf("%3d ", arr[i][j]); } printf("\n"); }//출력 return 0; } |
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #include <stdio.h> int main(void){ int arr_size_h, arr_size_w; printf("ex 1) "); scanf("%d %d", &arr_size_h, &arr_size_w); int arr[100][100] = { 0 }; int i = 0, j = 0, num = 1, counter = 0; int direction = 0;//0 for right side, 1 for down side, 2 for left side, 3 for up side while (num <= arr_size_w*arr_size_h){ arr[i][j] = num; if (direction == 0){ if (arr[i][j + 1] == 0 && j < arr_size_w-1){ j++; counter = 0; } else{ counter++; direction = 1; i++; } }//오른쪽으로 진행 else if (direction == 1){ if (arr[i + 1][j] == 0 && i < arr_size_h-1){ i++; counter = 0; } else{ counter++; direction = 2; j--; } }//아래쪽으로 진행 else if (direction == 2){ if (arr[i][j-1] == 0 && j > 0){ j--; counter = 0; } else{ counter++; direction = 3; i--; } }//왼쪽으로 진행 else if (direction == 3){ if ( arr[i - 1][j] == 0 && i > 0){ i--; counter = 0; } else{ counter++; direction = 0; j++; } }//위쪽으로 진행 num++; } for (i = 0; i<arr_size_h; i++){ for (j = 0; j<arr_size_w; j++){ printf("%3d ", arr[i][j]); } printf("\n"); }//출력 return 0; } |
Comments
Post a Comment