일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 후기
- 걷기앱
- 반구대암각화
- 브이포
- AT&T
- VDI
- 2차전직
- 쿠폰
- AIA Vitality
- 버그
- 한국대중음악박물관
- 주식
- axe
- 치루
- 창세기전 모바일
- 샤오미
- 족저근막염
- 도미네이션즈
- 워리어
- 리니지2레볼루션
- 몬스터스트라이크
- 달빛조각사
- 창세기전
- 아가시온
- 스피릿위시
- 피쉬아일랜드
- 울산박물관
- 후쿠오카
- v4
- 국립경주박물관
- Today
- Total
일상다반사 로그
C언어 마름모 본문
#include <stdio.h>
void ex1();
void ex2();
void main()
{
printf("마름모출력 \n");
ex1();
printf("\n모래시계 \n");
ex2();
}
void ex1(){
/*변수선언
cnt: 출력할 배열의 열의 시작값결정
cnt1: cnt로부터 열의 시작값을 받아서 값을 증감하여 차례대로 배열방을 방문
cnt2: 출력의 횟수결정을 위한변수
m: row값 i와 cnt2값을 계산하여 출력횟수를 결정한다.*/
int i,j,k,mat[5][5];
int cnt =2, cnt1=0, cnt2=0, m;
/*배열값 초기화*/
for(i=0; i<5; i++){
for(j=0; j<5; j++){
mat[i][j] = ++cnt1; //여기서 cnt1은 배열의 초기화를 위해사용
}
}
cnt1=0; //다시 cnt1값을 초기화
//여기서부터 마름모 반을 갈라 위에 삼각형 만들기
for(i=0; i<3; i++){ //0~2행
for(j=3; i<j; j--){ //공백출력
printf(" \0");
}
cnt1 = cnt; //맨처음 출력할 위치는 (0,2)다 cnt값이 현재 2 이값을 cnt1에 넣는다.
m = i+cnt2; //출력횟수 계산
for(k=0; k<=m; k++){
printf("%3d",mat[i][cnt1]);
++cnt1;
}
cnt--; //위에 삼각형은 출력할 열의 시작점이 (0,2) (1,1) (2,0) 2,1,0 순으로 값이 줄어든다.
cnt2++;
printf("\n");
}
//여기서부턴 마름모 나머지 역삼각형 만들기
cnt=1; //아래 삼각형은 출력할 열의 시작점이 (3,1) (4,2) 1, 2 순으로 값이 늘어난다.
cnt2=0;
for(i=3; i<5; i++){ // 3~4행
for(j=1; j<i; j++){
printf(" \0");
}
cnt1 = cnt;
m = 5-i-cnt2;
for(k=0; k<=m; k++){
printf("%3d",mat[i][cnt1]);
++cnt1;
}
cnt++;
cnt2++;
printf("\n");
}
}
void ex2(){
int i,j,k,mat[5][5];
int cnt =0, cnt1=0, cnt2=0, m;
/*배열값 초기화*/
for(i=0; i<5; i++){
for(j=0; j<5; j++){
mat[i][j] = ++cnt1;
}
}
/*모래시계 첫번째 삼각형은 0행에서 열의 출력순서가 0번째에서 시작한다. (0,0) (1,1) (2,2) 열이 0,1,2 순으로 증가한다.*/
for(i=0; i<3; i++){
for(j=0; j<=i; j++){
printf(" \0");
}
cnt1=cnt;
m= 5-i-cnt2; // (5 - 0 - 0 ) ( 5 - 1 - 1 ) ( 5 - 2 - 2) => 5 , 3 , 1
for(k=0; k<m; k++){ //m은 출력횟수를 결정한다.
printf("%3d",mat[i][cnt1]);
cnt1++;
}
cnt++;
cnt2++;
printf("\n");
}
/*모래시계 아래 삼각형은 3행에서 열의 출력순서가 1번째에서 시작한다. (3,1) (4,0) 열이 1, 0 순으로 감소한다.*/
cnt=1; cnt2=0; //변수들 초기화
for(i=3; i<5; i++){
for(j=i; j<5; j++){
printf(" \0");
}
cnt1=cnt;
m = i+cnt2; // ( 3 + 0 ) ( 4 + 1 ) => 3 , 5
for(k=0; k<m; k++){
printf("%3d",mat[i][cnt1]);
cnt1++;
}
cnt--;
cnt2++;
printf("\n");
}
}
'IT > C,C#' 카테고리의 다른 글
로봇C 미로찾기 (0) | 2017.11.14 |
---|---|
로봇 C 터치 센서 (0) | 2017.11.13 |
C 최대히프 삽입 (0) | 2017.10.20 |
C연결리스트 - 큐 (0) | 2017.10.19 |
C 연결리스트 - 스택 (0) | 2017.10.18 |