Как нарисовать кривую Серпинского (см. ниже), не используя графические библиотеки, а ‘*’ или слешы?

Для того чтобы нарисовать кривую Серпинского в C++ с помощью символов '*' или слешей, можно использовать рекурсивный подход.

Кривая Серпинского является фрактальной кривой, которая получается из треугольника путем его разбиения на 4 равных треугольника и удаления центрального треугольника.

Для начала, определим функцию drawSierpinskiCurve, которая будет принимать в качестве аргументов координаты вершин треугольника и глубину рекурсии:

void drawSierpinskiCurve(int x1, int y1, int x2, int y2, int x3, int y3, int depth) {
    // Базовый случай: если достигнута минимальная глубина рекурсии,
    // рисуем треугольник, используя символ '*'
    if (depth == 0) {
        // Рисование треугольника с помощью символа '*'
        // ...
        return;
    }

    // Разбиваем текущий треугольник на 4 равных треугольника
    int x12 = (x1 + x2) / 2;
    int y12 = (y1 + y2) / 2;
    int x23 = (x2 + x3) / 2;
    int y23 = (y2 + y3) / 2;
    int x31 = (x3 + x1) / 2;
    int y31 = (y3 + y1) / 2;

    // Рекурсивно вызываем функцию для отрисовки каждого из трех новых треугольников
    drawSierpinskiCurve(x1, y1, x12, y12, x31, y31, depth - 1);
    drawSierpinskiCurve(x12, y12, x2, y2, x23, y23, depth - 1);
    drawSierpinskiCurve(x31, y31, x23, y23, x3, y3, depth - 1);
}

В функции drawSierpinskiCurve сначала проверяется, достигнута ли минимальная глубина рекурсии (параметр depth). Если это так, функция рисует треугольник с помощью выбранного символа '*'. В противном случае функция разбивает текущий треугольник на 4 подтреугольника, вычисляя новые координаты и рекурсивно вызывает drawSierpinskiCurve для каждого из них с уменьшением глубины рекурсии на единицу.

Чтобы нарисовать кривую Серпинского, можно использовать функцию drawSierpinskiCurve следующим образом:

int main() {
    // Задаем координаты вершин треугольника и глубину рекурсии
    int x1 = 0, y1 = 0;
    int x2 = 100, y2 = 0;
    int x3 = 50, y3 = 100;
    int depth = 5;

    // Вызов функции для отрисовки кривой Серпинского
    drawSierpinskiCurve(x1, y1, x2, y2, x3, y3, depth);

    return 0;
}

В этом примере заданы координаты вершин треугольника и глубина рекурсии depth, равная 5. Результат выполнения программы будет выводом на экран рисунка кривой Серпинского, состоящей из символов '*'.

Этот алгоритм можно адаптировать для использования других символов, например, слешей, изменяя соответствующий код в функции drawSierpinskiCurve.