*で、ピラミッドを表示するプログラムについて

[戻る]
しろ 2005/05/24(火) 19:08:53
*で、ピラミッドを表示するプログラムで、一部、何を意味するのかが不明な点がありま
す。
  *
 ***
*****
という形で表示するプログラムなんですけど、

#include<stdio.h>
main(){

int i,j,height;

printf("ピラミッドを作ろう。");scanf("%d",&height);

for(i=1;i<=height;i++){
 for(j=1;j<=height-i;j++)←第1疑問点
    printf(" ");
 for(j=1;j<=i*2-1;j++)←第2疑問点
  printf("*");
    printf("\n"); 
}
}

第一疑問点、第2疑問点のそれぞれの継続条件である
height-i,i*2-1の時のiというのは、ピラミッドの段数を表しているのか、
それとも*の横並びの数を表しているのか
どっちなのでしょうか?

まきじ 2005/05/24(火) 19:15:57
>for(j=1;j<=height-i;j++)←第1疑問点

* の左側のスペース数。

>for(j=1;j<=i*2-1;j++)←第2疑問点

* の数。

iijima 2005/05/24(火) 20:14:44
> height-i,i*2-1の時のiというのは、ピラミッドの段数を表しているのか、
> それとも*の横並びの数を表しているのか

"i"は何かということなら、描こうとしているピラミッドの最上段から数えて何段目か
(スクリーン上で言えば何行目か)ということですね。
ピラミッドの段数は"height"、最上段からi段目の"*"の横並びの数は"i*2-1"。
このような疑問が生じたら、手間を惜しまずに紙と鉛筆を使って自分で実行してみると
理解できます。

本題ではありませんが、main関数はint型の値(正常終了のときには0)を返すきまりと
なっています。

int main( void )
{
    ...
    return 0;
}

古いスレッドには追加発言できません。