Всем привет,
Я решил эту задачу можно сказать методом тыка, но сработало 😀 Но потом посмотрел правильное решение и не могу до конца понять-сформулировать логику последнего else, в камом смысле она выводит на экран пробел, как программа понимает что пробел должен быть именно между символом Б? Не знаю поянтно ли спросил, может кто-сможет объяснить?
// напишите тут ваш код
int height = 1;
while (height <= 10)
{
int width = 1;
while (width <= 20)
{
if (height == 1 || height == 10) // если высота 1 или 10 печатай Б
{
System.out.print("Б"); // у нас высота 1, одно из условие совпадает, программа печатает Б (бесконечно)
}
else if (width == 1 || width == 20) // иначе есле ширина 1 или 20, печатай Б
{
System.out.print("Б"); // у нас высота 1, печатает Б (бесконечно)
}
else // иначе, печатай пробел
{
System.out.print(" ");
}
width++;
}
System.out.println();
height++;
}
}
}
Anton
1 уровень
Вопрос по задаче с прямоугольником, не могу до конца понять логику в правильно решении.
Обсуждается
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #598481
4 мая 2021, 11:59полезный
у тебя переменная width на каждой итерации внешнего цикла меняется в диапазоне [1; 20] с шагом 1.
Внутри внутреннего цикла ты каждый раз проверяешь, чему она равна. Если равна границе этого отрезка (или 1 или 20), то надо напечатать границу прямоугольника ("Б"), в любом другом случае (т.е. от 2 до 19) печатаем пробел. Когда width станет равно 21, внутренний цикл прервется, начнется следующая итерация внешнего цикла - а там все по новой: width снова станет равным 1, внутренний цикл начнется заново. И так 10 раз, пока height не станет равно 11.
+1
Anton Junior Software Developer
4 мая 2021, 12:06
т.е. вот здесь обозначены как бы границы прямоугольника?
else if (width == 1 || width == 20)
0
hidden #598481
4 мая 2021, 12:30
ну да, тебе ведь надо нарисовать прямоугольник размером 20 на 10, в середине которого пробелы:
Цифры добавил для наглядности
В каждой строке (кроме первой и последней) на первой и на двадцатой позиции стоит буква Б, а между ними восемнадцать пробелов.
+1
Anton Junior Software Developer
4 мая 2021, 13:17
Спасибо! Вот этот момент не смог сам понять :)
0
Пирожников Александр
4 мая 2021, 10:15
Почему бесконечно, у тeбя же цикл ограничен 10 и 20
0
Anton Junior Software Developer
4 мая 2021, 11:59
это я пытался проследить логику программы по ходу ее написания, на том моменты буква Б выводилась бесконечно 🙂
0
Anton Junior Software Developer
4 мая 2021, 12:13
Вижу тоже намучился с этим заданием ))
0