반응형
지그재그 만들기
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 |
행과 열에 대한 개념을 알고 나면 어렵지 않을 문제라고 생각합니다.
반응형
'훈, IT 공부 > C,C++,MFC' 카테고리의 다른 글
ASLR이란? 왜 계속 주소가 바뀌는건가요!!! (메모리변조) (0) | 2018.01.03 |
---|---|
[실습코딩] 정렬 코드화 하기 ( 버블, 선택, 선택으로 알려진 버블) (0) | 2018.01.01 |
[실습코딩] 피라미드 별찍기 (0) | 2017.12.29 |
[기초바로잡기]형승격(type promotion) (0) | 2017.12.27 |
[실습코딩] 나이에 따른 분류 및 요금계산 ( 2분할 방식, 단계별 분류) (2) | 2017.12.25 |
댓글