ページ 11

自力でピラミッド作ったが・・・

Posted: 2013年3月23日(土) 09:35
by まるくま
自力でピラミッド作れたんでとてもうれしかったです(`・ω・´)(こんなことで喜んじゃいけないか(笑))

ですが・・・少し気になることがあります。

コード:

#include <stdio.h>

 int main(void)
 {
	 int i,j,n;

	 printf("何段ですか:");
	 scanf("%d", &n);

	 for(i=0; i<n; i++){
		 for(j=0; j<n-i; j++){
			 putchar(' ');
		 }
		 for(j=0; j<i+(i-1); j++){
			 putchar('*');
		 }
		 putchar('\n');
	 }
	 return(0);
 }
これを実行したときにピラミッドは問題なく作れるんですが、
段数を入力して、からピラミッドのてっぺんの*
まで1行スペースがあるんですけど何かも違ってますかね?

あんま気にしないほうがいいですか?

Re: 自力でピラミッド作ったが・・・

Posted: 2013年3月23日(土) 09:42
by みけCAT
i=0のとき、i+(i-1)==-1であり、0より小さいです。

コード:

for(i=0; i<n; i++){

コード:

for(i=1; i<=n; i++){
としたらどうですか?

Re: 自力でピラミッド作ったが・・・

Posted: 2013年3月23日(土) 10:12
by ホヅミ
ついでに

コード:

for(j=0; j<i+(i-1); j++){

コード:

for(j=0; j<i*2-1); j++){
にするとより一層プログラムがイケメンに見えるようになりますよ
お好みですがw

Re: 自力でピラミッド作ったが・・・

Posted: 2013年3月23日(土) 10:26
by 初級者
質問者さんの出力結果は、段数が1個足りないように見えます。
以下は、ちょっとした例です。

コード:

#include <stdio.h>
 
int main(void)
{
    int x, y, n;
    
    printf("何段ですか:");
    scanf("%d", &n);
    
    for (y = n - 1; y >= 0; y--) {
        for (x = -n + 1; x <= n - 1; x++) {
            putchar((y <= x + n - 1 && y <= -x + n - 1) ? '*' : ' ');
        }
        putchar('\n');
    }
    return 0;
}

Re: 自力でピラミッド作ったが・・・

Posted: 2013年3月23日(土) 11:41
by derok
全段で*を2個づつ増やせばいいと思います。

Re: 自力でピラミッド作ったが・・・

Posted: 2013年3月23日(土) 15:13
by まるくま
みけCATさん、ホヅミさん、初級者さん、derokさん、ありがとうございます(`・ω・´)

たしかに1段足りませんでした(汗

2点ほど修正したらきちんと実行できるようになりました!

i=0だったらi+(i-1)の部分が-1になることに気づきませんでした(汗

初級者さんのは少しずつわかってきました!でもまだ難しい(´・ω・`)

コード:

#include <stdio.h>

 int main(void)
 {
	 int i,j,n;

	 printf("何段ですか:");
	 scanf("%d", &n);

	 for(i=1; i<=n; i++){
		 for(j=0; j<n-i; j++){
			 putchar(' ');
		 }
		 for(j=0; j<i*2-1; j++){
			 putchar('*');
		 }
		 putchar('\n');
	 }
	 return(0);
 }