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 | #include <stdio.h> int main() { int arr[100][100]; int size, save_size; int i, j; int x=0, y=-1, turn=1; int num=1; printf("input = "); scanf("%d",&size); save_size=size; while(save_size!=0) { for(i=1; i<=save_size; i++) { y+=turn; arr[x][y]=num; num++; } save_size--; for(i=1; i<=save_size; i++) { x+=turn; arr[x][y]=num; num++; } turn*=-1; } for(i=0; i<size; i++) { for(j=0; j<size; j++) { printf("%3d ",arr[i][j]); } printf("\n"); } return 0; } | cs |
정사각형말고도 다른방식의 달팽이 배열도 출력해보려고 했는데...
다른것은 너무 헷갈려서 이해가 잘 가지 않는다 :(
------------------------------------------------------
직사각형도 출력하는걸 성공했다!
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 71 72 73 74 75 76 77 | #include <stdio.h> int main() { int arr[100][100]; int size_x,size_y; int save_size_x,save_size_y; int i, j; int x=0, y=-1, turn=1; int num=1; int max_num=0; printf("input = "); scanf("%d %d",&size_x,&size_y); max_num=size_x*size_y; save_size_x=size_x; save_size_y=size_y; if(size_x==size_y) // 정사각형 { save_size_x=save_size_y; while(save_size_x!=0) { for(i=1; i<=save_size_x; i++) { y+=turn; arr[x][y]=num; num++; } save_size_x--; for(i=1; i<=save_size_x; i++) { x+=turn; arr[x][y]=num; num++; } turn*=-1; } } else // 직사각형 { while(num!=max_num+1) { for(i=1; i<=save_size_y; i++) { y+=turn; arr[x][y]=num; num++; } save_size_x--; for(i=1; i<=save_size_x; i++) { x+=turn; arr[x][y]=num; num++; } turn*=-1; save_size_y--; } } for(i=0; i<size_x; i++) { for(j=0; j<size_y; j++) { printf("%3d ",arr[i][j]); } printf("\n"); } } | cs |
뿌 - 듯 :)
------------------------------------------------------
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 | #include <stdio.h> int main() { int arr[100][100]; int size_x,size_y; int save_size_x,save_size_y; int i, j; int x=0, y=-1, turn=1; int num=1; int max_num=0; printf("input = "); scanf("%d %d",&size_x,&size_y); max_num=size_x*size_y; save_size_x=size_x; save_size_y=size_y; while(num!=max_num+1) { for(i=1; i<=save_size_y; i++) { y+=turn; arr[x][y]=num; num++; } save_size_x--; for(i=1; i<=save_size_x; i++) { x+=turn; arr[x][y]=num; num++; } turn*=-1; save_size_y--; } for(i=0; i<size_x; i++) { for(j=0; j<size_y; j++) { printf("%3d ",arr[i][j]); } printf("\n"); } } | cs |
수정해보았더니 더 깔끔한 코드가 되었다.
'Layer 7 > assignment' 카테고리의 다른 글
[Linux] 리눅스 보고서 (0) | 2019.05.26 |
---|---|
[C] 동적할당 보고서 (0) | 2019.04.12 |
[C] 포인터 보고서 (0) | 2019.04.03 |
[C] 함수 보고서 (0) | 2019.04.03 |
[C] 배열 보고서 (0) | 2019.03.30 |