Вывод пирамидки из букв - C (СИ)
Формулировка задачи:
Друзья, подскажите, если кто это решил или знает как. Сломал себе всю голову сегодня. Уже просто интересно.
P.S. Мне только одному кажется, что в этой книге практические задания немного не соответствуют уровню предварительной подготовки к ним? Реально очень тяжело. Хотя читаю все очень добросовестно, и на вопросы для самоконтроля отвечаю практически без ошибок.
Решение задачи: «Вывод пирамидки из букв»
textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
int main(void)
{
char letter, i, j;
int spaces, count;
printf("Input a letter: ");
scanf("%c", &letter);
letter = toupper(letter);
spaces = letter - 'A';
for (i = 'A'; i <= letter; ++i)
{
for (count = 0; count < spaces; ++count)
printf(" ");
for (j = 'A'; j < i; ++j)
printf("%c", j);
for (j = i; j >= 'A'; --j)
printf("%c", j);
printf("\n");
--spaces;
}
_getch();
return 0;
}
Объяснение кода листинга программы
В этом коде происходит следующее:
- Ввод буквы от пользователя с помощью функции scanf.
- Приведение введенной буквы к верхнему регистру с помощью функции toupper.
- Вычисление количества пробелов, которые должны быть напечатаны перед началом вывода пирамиды, с помощью вычитания кода символа 'A' из введенной буквы.
- Вывод пирамиды из букв. Это делается с помощью трех вложенных циклов.
- Внешний цикл идет от символа 'A' до введенной буквы.
- Внутренний цикл по счету пробелов печатает соответствующее количество пробелов.
- Второй внутренний цикл печатает буквы от 'A' до текущей буквы во внешнем цикле.
- Третий внутренний цикл печатает буквы от текущей буквы до 'A' во внешнем цикле.
- Уменьшение количества пробелов на единицу после каждого вывода пирамиды.
- Использование функции _getch для приостановки выполнения программы и возврата 0, чтобы указать, что программа успешно завершилась.