프로그래밍을 공부하던 친구와의 대화중 다이아몬드 찍기 예제 코드에 관한 이야기로 얘기를 나누던 도중 친구가 보여준 코드에선 for문을 두번 반복해서 다이아몬드를 찍는걸 보고 이중 포문 한번에 찍어보고 싶어서 한번 짜봤다.
#include <iostream>
using namespace std;

void main()
{
 int size = 7;
 int center= (size/2);
 int index;
 for(int i=0; i<size; i++)
 {
  index= i;
  if(i>center)
  {
   index= size - i-1;
  }
  for(int j=0; j<size; j++)
  {
   if(abs(center-j)<=index)
   {
    cout<<"*";
   }
   else
   {
    cout<<" ";
   }
  }
  cout<<endl;
 }
 getchar();
}
//i가 size/2 보다 커지면 하나씩 더 감소해야함 예) 사이즈가 5이면 3 이상부터 감소해야 하므로 5-4= 4, 5-5=0;
//다시 말해, 사이즈를 통해 중앙값을 알아내고, 몇번째 행의 j값이 중앙값에서 얼마나 떨어져 있느냐에 따라 * 혹은 띄어쓰기를 실행함
//즉, ' ', ' ', '*', ' ', ' ' //0번째 행
//    ' ', '*', '*', '*', ' ' //1번째 행
//과 같은 순서로 상윗단은 진행이 되어야 하므로
//0번째 줄이면 중앙값에서 0만큼 떨어져있을때 별
//1번째 줄이면 중앙값에서 1만큼 떨어져 있을 때 별을 찍는다

//하단부는 ' ', '*', '*', '*',        //3번쨰 행 
//         ' ', ' ', '*', ' ', ' '    //4번째 행
//위와 같은 방식으로 진행이 되어야 하는데, 중앙값에서의 범위가 1, 0으로 줄어야 하므로
//size- i(행의 숫자) 를 하면 3번째 행의 index는 5-3= 2, 4번째 행의 index는 5-4=1
//이 된다. 여기서 컴퓨터는 0부터 숫자를 세므로 -1을 추가하면, 1, 0의 범위만큼만 출력한다.



저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License

'ComPuter > C&C++&C#' 카테고리의 다른 글

DLL  (0) 2012/04/03
내 컴퓨터에서 빌드한 파일을 다른 컴퓨터에서 실행시키기  (1) 2010/07/16
소수 판별 프로그램  (0) 2010/07/16
다이아몬드 생성 예제  (0) 2010/07/16
Posted by CynicalAmoeba
태그
◀ PREV : [1] : ... [53] : [54] : [55] : [56] : [57] : [58] : [59] : [60] : [61] : ... [79] : NEXT ▶

BLOG main image
개인적인 공부, 연구 자료의 업로드와 누군가 저보다는 삽질을 덜 하셨으면 하는 마음에 시작한 블로그입니다. ^^ by CynicalAmoeba

카테고리

분류 전체보기 (79)
잡다 (4)
Industrial Engineering (7)
ComPuter (51)
Study...etc. (1)
Project (16)

공지사항

달력

«   2012/05   »
    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    
Total : 6,335
Today : 10 Yesterday : 23
티스토리 모바일 블로그