Здравствуйте!
Помогите решить задачу (из книжки), написать нужно на СИ.
Я смог только составить 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 выдаём их в обратном порядке. Подумайте, как это можно сделать.
В конце строки не забывайте
Комментариев нет:
Отправить комментарий