

こんにちは。  
任意の数を入力して、`*`でピラミッドが右90度に傾いているように出力されるようにプログラミングしたいのですが、例えば、3だったら以下のように出力され、0と入力されたらストップする。

[code]

    *
    **
    ***
    **
    *
    
[/code]

以下のようにプログラミングしたのですが、添付のようにうまくいきません。  
どこが間違えているのでしょうか？

[code]

    #include <stdio.h>
    
    int main(){
      int i, j, len, k;
      for(;;){
        scanf("%d", &len);
        if(len==0){break;}
        for(i=1;i<=len;i++){
          for(j=1;j<=i;j++)
            printf("*");
          printf("\n");
        }
        for(k=len-1;k>0;k--){
          for(j=1;j<=len-1;j++)
            printf("*");
          printf("\n");
        }
      }
    }
    
[/code]

[![](https://i.stack.imgur.com/BM6na.png)](https://i.stack.imgur.com/BM6na.png)


CC BY-SA 4.0
2019-07-02T11:18:44.230
56325
2019-07-02T14:20:57.847
2019-07-02T14:20:57.847
76
34892
question
c
多重ループを使ったプログラミングがうまくいかない


下のコメント部分のループの条件が間違っています。`j<len-1`となっているため、必ず`入力値-1`の個数だけ`*`を書いてしまいます。蛇足だとは思いますが、正しくは`j<=k`です。

[code]

    #include <stdio.h>
    
    int main(){
      int i, j, len, k;
      for(;;){
        scanf("%d", &len);
        if(len==0){break;}
        for(i=1;i<=len;i++){
          for(j=1;j<=i;j++)
            printf("*");
          printf("\n");
        }
        for(k=len-1;k>0;k--){
          for(j=1;j<=len-1;j++) /* <= ループの条件が j<len-1 になっている */
            printf("*");
          printf("\n");
        }
      }
    }
    
[/code]


CC BY-SA 4.0
2019-07-02T12:55:00.507
56328
2019-07-02T12:55:00.507
3605
56325
answer