일상다반사 로그

C언어 마름모 본문

IT/C,C#

C언어 마름모

일상다반사로그 2017. 10. 23. 20:54
반응형

#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
Comments