Программа 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();
}