Как решить данную задачу?

Суть задачи:
Пользователь делает ввод буквы, а программа выводит некий аналог ёлки из букв(используя 3 вложенных цикла)
Пример:
Ввод: D
Вывод:
60035e14b361f637982011.png
Либо так:
60035d9873415597602731.png

Спасибо за помощь!
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
@VovkVasil Автор вопроса
Я нашел правильный ответ, может кому-то пригодиться.
И да он очень костыльный)
#include <stdio.h>
int main()
{
    int row;
    char ch, lets;


    printf("Enter letter(uppercase only): ");
    scanf("%c", &ch);
    row = ch - '@';//костыль для правильного подсчета


    for (int i = 1; i <= row; i++)//количество столбцов
    {		
        for (int a = i; a < row; a++) //пробелы
            printf(" ");
        for (int b = i, lets = 'A'; b !=0; b--)// буквы которые идут в восходящем порядке
        {
            printf("%c", lets++);
        }
        for(int b = i-1,lets=ch+(i-row-1); b !=0; b--) //буквы в нисходящем порядке
                printf("%c", lets--);
         printf("\n");
    }
    return 0;
}


Кстати, если есть варианты лучше, то пишите, ибо мне интересно)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Fallenyasha
#include <iostream>
#include <iomanip>

int main()
{
    int row;
    char ch;
    std::string forward="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    std::string reverse="ZYXWVUTSRQPONMLKJIHGFEDCBA";

    printf("Enter letter(uppercase only): ");
    scanf("%c", &ch);
    row = ch - '@';

    for (int i = 1; i <= row; i++)
        std::cout << std::setw(row) << forward.substr(0, i) << reverse.substr(27 - i) << "\n";

    return 0;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы