2017-01-08 3 views
1

Der Code kompiliert ordnungsgemäß, aber jedes Mal, wenn ich es ausführe, wird es das Programm nicht ordnungsgemäß ausführen.C Programm fragt nach der richtigen Nummer

Wenn ich ein # kleiner als 23 setze, fragt es mich immer noch, es erneut zu versuchen. Wenn ich dieselbe Nummer zum zweiten Mal einstelle, funktioniert es.

Wenn ich eine größere Zahl als 23 setze, fragt es mich immer wieder zu versuchen.

#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

Sie verwenden eine 'do..while()' -Schleife ... es wird den Körper einmal durchlaufen, bevor Sie die Schleifenbedingung überprüfen. Probieren Sie stattdessen eine normale 'while()' - Schleife aus. – Dmitri

+1

Vergiss nicht, dass Pyramiden keine negativen Höhen haben können, und Pyramiden mit einer Höhe von Null sind so etwas wie ein philosophisches Rätsel. –

+1

@ JonathanLeffler: aber das sind die einfachsten zu bauen! – usr2564301

Antwort

2

Schleife sollte sein:

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(); 
} 

Mit do-while, tat 2 Dinge:

  1. Sie die Eingabe akzeptiert zuerst. height = get_int();
  2. Es tritt in das do-while und ohne prüfen, ob das Alter größer ist als 23. Dann eingabe fragt wieder height = get_int(); }
1

auf Antwort des Bandi Kishore Hinzufügen, die Höhe der Pyramide kann auch nicht weniger als 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 Fragen sollten wirklich bei https://cs50.stackexchange.com/ sein.

+0

@ JonathanLeffler Ich habe das komplett vermisst ... jetzt behoben –

+0

Viel besser. Ich würde wahrscheinlich mit 'printf gehen (" Die Pyramide sollte zwischen 1 und 23 Fuß hoch sein (nicht% d Füße) \ n ", Höhe), was nicht nur ein wenig prägnanter ist (und der akzeptable Bereich wird positiv dargestellt) gibt aber auch Feedback darüber, was das Programm denkt, dass sie eingegeben wurden - was Ihnen beim Debuggen enorm helfen kann, wenn etwas mit dem Lesecode nicht stimmt. Das ist jedoch eine Verfeinerung. –

Verwandte Themen