c 언어 조건문 반복문 피라미드 만들기 질문입니다

ginsis의 이미지

#include
#define N 20

int main(void)
{
int i,j;
for(i = 0; i < N; i++)
{
for(j = N - i - 1; j > 0; j--)
{
printf(" ");
}
for(j = 0; j < i; j++)
{
printf("★");
}
for(j = 0; j < i - 1; j++)
{
printf("★");
}
printf("\n");
}
return 0;
}

요 피라미드를 만들때 공백칸의 부분에서 for(j = N - i - 1; j > 0; j--) i는 0부터 19까지 대입하면 공백이
19/18/17이런식으로 나오는데 막상 실행시키면 공백이 19/17/15 요런식으로 되던데 왜그런가요??

File attachments: 
첨부파일 크기
Image icon 피라미드2.PNG12.08 KB
shint의 이미지

그냥. 출력 되는. ★ 글자 크기가. 공백 크기와 달라 보여서 인거 같은데요. ㅇ_ㅇ??
http://codepad.org/1l06dhI3

1로 출력해보시면. 같거나 작은 크기로 보일겁니다.

                  1
                 111
                11111
               1111111
              111111111
             11111111111
            1111111111111
           111111111111111
          11111111111111111
         1111111111111111111
        111111111111111111111
       11111111111111111111111
      1111111111111111111111111
     111111111111111111111111111
    11111111111111111111111111111
   1111111111111111111111111111111
  111111111111111111111111111111111
 11111111111111111111111111111111111
1111111111111111111111111111111111111

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

ginsis의 이미지

for(j = N - i - 1; j > 0; j--) j값만큼 공백칸을 가지는거아닌가용 ??
값이 20이면 20칸만큼 공백 이런느낌으로요

ginsis의 이미지

반대로 역피라미드도 만들어봤는데요
#include
#define N 20

int main(void)
{
int i, j;
for(i = 0; i < N; i++)
{
for(j = N -(N-i); j > 0; j++);
{
printf(" ");
}
for(j = N-i-1; j > 0; j--)
{
printf("★");
}
for(j = N-i-2; j > 0; j--)
{
printf("★");
}
printf("\n");
}
return 0;
}

공백칸의 for문을 어떤느낌으로 해야하는지 잘모르겠습니다.
요렇게 실행시키면 역피라미드 절반만 나옵니다.

shint의 이미지

KLDP 에서는
< code>
< /code>
로 묶어서 보실 수 있습니다.

N 이 3개인 경우는 가능하네요. ㅇ_ㅇ;;
★★★

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

shint의 이미지

출력해보면. 이렇게 됩니다.

http://codepad.org/OBlnh1tC

#include <stdio.h>
#define N 20
 
int main(void)
{
    int i,j;
    for(i = 0; i < N; i++)
    {
        for(j = N - i - 1; j > 0; j--)
        {
            printf("x");
        }
        printf("\n");
    }
    return 0;
}
 
//
xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxx
xxxxxxxxxxxxx
xxxxxxxxxxxx
xxxxxxxxxxx
xxxxxxxxxx
xxxxxxxxx
xxxxxxxx
xxxxxxx
xxxxxx
xxxxx
xxxx
xxx
xx
x

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

세벌의 이미지

고정폭 글꼴을 쓰면 됩니다.

kldp에서 소스코드를 쓸 때는 code 태그를 활용하세요. https://kldp.org/comment/624393 참조.
질문하신 분의 소스코드를 조금 다듬고 code 태그 활용해서 써 보았습니다.

#include <stdio.h>
#define N 20
 
int main(void)
{
	int i, j;
	for(i = 0; i < N; i++){
		for(j = N - i - 1; j > 0; j--){
			printf(" ");
		}
 
		for(j = 0; j < i; j++){
			printf("*");
		}
 
		for(j = 0; j < i - 1; j++){
			printf("*");
		}
 
		printf("\n");
	}
 
	return 0;
}

근데 써 놓고 보니 이미 shint 님께서 다 가르쳐 주신 내용이네요 :)