훈, IT 공부/C,C++,MFC

[실습코딩] 지그재그 숫자 찍어내기

IT훈이 2017. 12. 30.
반응형

지그재그 만들기


2차원 배열과 반복문을 이용한 지그재그 만들기


문제 

2차원 배열에 순차적으로 숫자를 기입하는 것이 아니라 지그재그 형태로 숫자를 기입하여라.

아래의 사진과 값은 형태가 되면 된다.

  



코드

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
#include<stdio.h>
 
int main(void){
    int zigzeg[5][5= { 0 };
    int i = 0, j = 0;
    int count = 0;
 
 
    for (i = 0; i < 5; i++){
        if (i % 2 == 0){
            for (j = 0; j < 5; j++){
                zigzeg[i][j] = ++count;
            }
        }
        else{
            for (j = 4; j >= 0; j--){
                zigzeg[i][j] = ++count;
            }
        }        
    }
    for (i = 0; i < 5; i++){
        for (j = 0; j < 5; j++){
            printf("%d    ", zigzeg[i][j]);
        }
        putchar('\n');
    }
    return 0;
}
cs

16번 행에서 다른 방법으로 숫자를 입력하는 방식이 있습니다.

저의 경우에는 "--"연산자를 이용하여서 값을 줄여가는 방향으로 하였습니다.

다른방법으로는 인덱스의 값을 빼기 연산을 이용하여 만들어 내는 방법입니다.

1
2
3
for( j =0 ; j < 5; j ++){
    zigzeg[i][4-j] = ++count;
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
#include<stdio.h>
 
int main(void){
    int aList[5][5= { 0 };
    int i = 0, j = 0, nCounter = 0, nOffset = 1;
 
    for (i = 0; i < 5++i){
        if (i % 2 == 0)
        {
            nCounter = i * 5;
        }else{
            nCounter = (i + 1* 5 + 1;
        }
        for (j = 0; j < 5++j){
            nCounter += nOffset;
            aList[i][j] = nCounter;
        }
 
        nOffset = -nOffset;
    }
 
    for (i = 00; i < 5++i){
        for (j = 0; j < 5++j){
            printf("%d\t", aList[i][j]);
        }
        puts("");
    }
    return 0;
}
cs




행과 열에 대한 개념알고 나면 어렵지 않을 문제라고 생각합니다.

반응형

댓글