Как дописать программу на c++, чтобы на экран выводилась буква М или W правильно?

Задание: Напишите программу, удовлетворяющую всем следующим требованиям:

  1. Получить два входных значения. a. Целое число, представляющее размер буквы (M или W) для печати. Оно представляет собой количество строк всего письма, которое необходимо распечатать. b. Символ, указывающий на печать M или W или "Неправильный ввод!". Если этот символ равен M, то выводится форма M (см. ниже); если этот символ равен W, то выводится форма W. В противном случае программа выведет "Неправильный ввод!".
  2. Фигуру M можно представить как два равнобедренных треугольника без базовых ребер, правая нижняя вершина первого треугольника перекрывает левую нижнюю вершину второго треугольника. Фигура W - это перевернутая фигура M. ПРИМЕЧАНИЕ: 1: Если высота меньше (или равна) 1, следует вывести сообщение "Неправильный вход!". 2: M или W должны быть чувствительны к регистру. (то есть если входной символ "m" или "n", то результат должен быть "Неправильный вход!").

правильный пример вывода

Вот что пока получилось у меня, но не могу понять как выводить крайние диагональные линии

#include <iostream>
using namespace std;

int main() {
    int height, i, j;
    char letter;
    cout << "Please input the height (integer):" << endl;
    cin >> height;
    int p1, p2;
    p1=1;
    p2=height*2-1;
    if (height <= 1){
        cout << "Wrong input!" << endl;
    }
    else {
        cout << "Do you want to print M or W?:" << endl;
        cin >> letter;
        if (letter=='M') {
            for(i=1;i<=height;i++)
            {
                for (j=1; j<=height*2;j++ )
                {
                    if (j==p1||j==p2)
                    {
                        cout << "*";

                    }
                    else
                    {
                        cout << " ";
                    }
                }
                p1++;
                p2--;
                cout << endl;
            }
        }
        // else {} for W
    return 0;
}

что получается пока у меня


Ответы (1 шт):

Автор решения: HolyBlackCat

Давайте думать.

    *       *
   * *     * *
  *   *   *   *
 *     * *     *
*       *       *

В каждой строке глазами считаем, сколько пробелов между звездочками:

4 - 7 -
3 1 5 1
2 3 3 3
1 5 1 5
0 7 - 7

Теперь берем цикл по строкам:

for (int i = 0; i < 5; i++)
{
    // std::cout << ...
}

Для начала, ваша задача - написать такой цикл, который выводил бы числа из таблицы выше. Вместо - годится любое число, но здесь удобно использовать -1.

Например, первая колонка - это будет 4 - i. (Но это работает только для высоты 5. Как думаете, как сделать для произвольной высоты?)

Когда сделаете, поменяйте код так, чтобы вместо чисел выводилось такое колчиество пробелов, а между ними - звездочки. Дальше останется только убрать лишние звездочки в первой и последней строках.

→ Ссылка