Страницы

Поиск по вопросам

воскресенье, 7 апреля 2019 г.

Построение пирамиды в консоли

Здравствуйте!
Помогите решить задачу (из книжки), написать нужно на СИ.
Я смог только составить 2 цикла, которая печатает буквы:
ch = ch1 = ch2; //Буква, которую ввёл пользователь
for ( ch; ch >= 'A'; ch--) // в порядке убывания { printf("%c", ch); }
for ( i = 'A'; i <= ch1; i++) //в порядке возрастания { printf("%c", i); }
Решение данной задачи я так же нагуглил, но совершенно не понял. Объясните, пожалуйста, как это реализовать. Спасибо.


Ответ

Давайте разобьём задачу на части, будет всё просто. У нас есть k строк. Чтобы напечатать их, надо, понятно, цикл по номеру строки от 0 до k - 1. Хорошо. Что должно быть в i-ой строке? Для начала, в строке есть несколько пробелов. Сколько? В последней строке (её номер k-1) 0 штук, в предпоследней (её номер k-2) один, и так далее. Значит, в i-ой строке у нас k - 1 - i пробелов в начале. Есть? Затем, там идут буквы от A по возрастанию. Сколько их в i-ой строке? В 0-й одна, в 1-ой две и т. д. То есть, i + 1 штук. Таким образом, нам нужен внутренний цикл от 0 до i, в котором мы выдаём новую букву. Видите? Затем, начиная от последней буквы вниз до A выдаём их в обратном порядке. Подумайте, как это можно сделать. В конце строки не забывайте

Комментариев нет:

Отправить комментарий