Программа CS 50- Pset 1 Mario

Набор задач требует от нас создания полупирамиды с использованием хешей. Вот ссылка на изображение того, как это должно выглядеть

Я понял идею и написал программу до печати пробелов (которые я заменил на "_" только для того, чтобы я мог проверить первую половину.

Однако когда я пытаюсь запустить мою программу, она не выходит за рамки цикла 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: 

2 ответа

Решение

Ваше условие цикла do/while неверно - измените:

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

либо:

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

или же:

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

(что вы считаете более читабельным / интуитивно понятным).

Это проще

         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();  
        }
Другие вопросы по тегам