2017-01-18 2 views
1

Я googled и читаю сообщения на стеках, но все еще не знаю, где мои коды идут не так, как это задано ... просто продолжайте просить ввести «высоту». После того, как вы набрали высоту, он не переходит к следующему шагу, кажется, застрял в бесконечном цикле.C - CS50 pset1 Марио Пирамида вызов

Мозг плавления.

Пожалуйста, помогите указать, где мои коды идут не так. Большое спасибо.

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

int main(void) 
{ 
    int height; 
    do 
    { 
     printf ("height: "); 
     height = get_int(); 
    }   
    while (height >= 0 || height <= 23); 

    for (int loop = 0; loop <= height; loop++) 
    { 
     for (int space = height - 1 - loop; space > 0; space--) 
      printf(" "); 


     for (int hash = 2 + loop; hash < height; hash++) 
      printf("#"); 

     printf("\n"); 
    } 
} 
+0

Почему вы не просто использовать зсапЕ() вместо этого? – Gnqz

+0

Не должно быть 'do {...} while (height <0 || height> 23);'? Я хочу предположить, что вы хотите снова спросить высоту, если пользователь вводит значение за границы. Кроме того, «get_int» управляет случаями, когда пользователь вводит что-то другое в 'int'? –

+0

@Bob__ Большое спасибо, вы поняли. Я должен более тщательно установить неравенство или, как бесконечный цикл. –

ответ

1

Здесь, в то время как цикл дел вы даете условие, что цикл должен продолжать то, что вы кладете высоту, потому что каждое число либо >=0 или <=23.

Вместо изменить условие для while(height<0||height>23)

Смежные вопросы