2017-01-08 3 views
1

コードは正しくコンパイルされますが、実行するたびに正しくプログラムが実行されません。Cプログラムは正しい番号を要求し続ける

#を23より小さく設定しても、もう一度試してください。 2回目に同じ番号を入力すると機能します。

23より大きい数値を入力した場合は、もう一度試してください。

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

int main(void) 
{ 
    int height; 
    printf("What is the height of the pyramid?\n"); 
    height = get_int(); 

    do { 
     printf("The pyramid cannot be higher than 23 feet!\n"); 
     printf("Try again!\n"); 
     printf("What is the height of the pyramid?\n"); 
     height = get_int(); } 
    while (height > 23); 

    if (height <= 23) { 
     printf("The height of the pyramid is %d feet high!\n", height); 
    } 
} 
+2

あなたは 'do..while()'ループを使用しています...ループ条件をチェックする前に本体を一度実行します。代わりに通常の 'while()'ループを試してください。 – Dmitri

+1

ピラミッドは負の高さを持つことができないことを忘れないでください。ピラミッドの高さは哲学的な難点です。 –

+1

@JonathanLeffler:ビルドするのが最も簡単です! – usr2564301

答えて

2

ループする必要があります:あなたが最初の入力を受け入れ

  1. while (height > 23) { 
        printf("The pyramid cannot be higher than 23 feet!\n"); 
        printf("Try again!\n"); 
        printf("What is the height of the pyramid?\n"); 
        height = get_int(); 
    } 
    

    行い、しばらく使用して、2つのことをしました。 height = get_int();

  2. それはDO-中に入り、年齢が続いて23以上であるかどうかをチェックせずにバンディキショールの答えに追加height = get_int(); }
  3. 再び入力用
1

を尋ね、ピラミッドの高さはまた、1より小さくすることはできません。

     // ↓this part 
while (height > 23 || height < 1) { 
    printf("The pyramid should be between 1 and 23 feet high (not %d feet)\n", height); 
    printf("Try again!\n"); 
    printf("What is the height of the pyramid?\n"); 
    height = get_int(); 
} 

CS50質問は本当にhttps://cs50.stackexchange.com/でなければなりません。

+0

@JonathanLeffler私は完全にそれを逃した...固定今 –

+0

はるかに良い。私はおそらく 'printf("ピラミッドは1フィートと23フィートの高さ(%dフィートではない)\ n "、高さ)でなければならないでしょう;そしてそれはもう少し簡潔であり(許容範囲は積極的に提示されます)また、プログラムが何を入力したと思っているかについてのフィードバックを提供します。これは、読み込みコードに何かが間違っている場合にデバッグする際に大いに役立ちます。それは洗練されたものだ。 –

関連する問題