0

問題セットでは、ハッシュを使用して半ピラミッドを作成するよう求められます。これがどのように見えるかの画像へのリンクです-

ここに画像の説明を入力

私はアイデアを思いつき、スペースを出力するまでプログラムを書きました(前半をテストできるように、スペースを「_」に置き換えました.

しかし、プログラムを実行しようとすると、do-while ループを超えません。つまり、ピラミッドの高さを尋ね続け、for ループをまったく実行していないようです。複数のアプローチを試しましたが、この問題は解決しないようです。

どんな助けでも大歓迎です!

以下は私のコードです-

# include <cs50.h> 
# include <stdio.h>

int main(void)

{
    int height; 

    do 
    {
        printf("Enter the height of the pyramid: ");
        height = GetInt(); 
    }
    while (height > 0 || height < 24); 

    for (int rows = 1; rows <= height, rows++) 
    {
        for (int spaces = height - rows; spaces > 0; spaces--)
        { 
            printf("_");
        }
    }
    return 0;
}

このプログラムを実行すると、次の出力が得られます。

Enter the height of the pyramid: 11
Enter the height of the pyramid: 1231
Enter the height of the pyramid: aawfaf
Retry: 12
Enter the height of the pyramid: 
4

2 に答える 2

3

do/while ループの条件が正しくありません - 変更してください:

do {
    ...
} while (height > 0 || height < 24); 

次のいずれかに:

do {
    ...
} while (height <= 0 || height >= 24); 

また:

do {
    ...
} while (!(height > 0 && height < 24)); 

(より読みやすく/直感的であると考える方)。

于 2014-05-30T09:21:08.883 に答える
-2

これはもっと簡単ですか

         for(int i=0;i<8;i++) {

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

                 System.out.print(" ");
             }
            for(int k=0;k<=(i+1);k++)
            {

                System.out.print("#");
            }
            System.out.println();  
        }
于 2014-07-25T13:06:42.963 に答える