Изучение программ с ромбовидным узором на C++

Программы с ромбовидными узорами — это популярное упражнение в программировании, которое предполагает печать узора в форме ромба с использованием звездочек или других символов. В этой статье мы рассмотрим несколько методов создания ромбовидных узоров на C++ и предоставим примеры кода для каждого метода.

Метод 1. Использование вложенных циклов

#include <iostream>
void printDiamond(int n) {
    for (int i = 0; i <= n; i++) {
        for (int j = 0; j <= n - i; j++)
            std::cout << " ";
        for (int k = 0; k <= 2 * i; k++)
            std::cout << "*";
        std::cout << std::endl;
    }

    for (int i = n - 1; i >= 0; i--) {
        for (int j = 0; j <= n - i; j++)
            std::cout << " ";
        for (int k = 0; k <= 2 * i; k++)
            std::cout << "*";
        std::cout << std::endl;
    }
}
int main() {
    int n;
    std::cout << "Enter the number of rows: ";
    std::cin >> n;
    printDiamond(n);
    return 0;
}

Метод 2: использование одного цикла и условий

#include <iostream>
#include <cmath>
void printDiamond(int n) {
    int i, j;
    for (i = 0; i <= n; i++) {
        for (j = 1; j <= n - i; j++)
            std::cout << " ";
        for (j = 1; j <= 2 * i - 1; j++)
            std::cout << "*";
        std::cout << std::endl;
    }

    for (i = n - 1; i >= 1; i--) {
        for (j = 1; j <= n - i; j++)
            std::cout << " ";
        for (j = 1; j <= 2 * i - 1; j++)
            std::cout << "*";
        std::cout << std::endl;
    }
}
int main() {
    int n;
    std::cout << "Enter the number of rows: ";
    std::cin >> n;
    printDiamond(n);
    return 0;
}

Метод 3. Использование рекурсии

#include <iostream>
void printSpaces(int n) {
    if (n > 0) {
        std::cout << " ";
        printSpaces(n - 1);
    }
}
void printStars(int n) {
    if (n > 0) {
        std::cout << "*";
        printStars(n - 1);
    }
}
void printDiamond(int n, int currentRow) {
    if (currentRow > n) {
        return;
    }

    printSpaces(n - currentRow);
    printStars(2 * currentRow - 1);
    std::cout << std::endl;

    printDiamond(n, currentRow + 1);

    printSpaces(n - currentRow);
    printStars(2 * currentRow - 1);
    std::cout << std::endl;
}
int main() {
    int n;
    std::cout << "Enter the number of rows: ";
    std::cin >> n;
    printDiamond(n, 1);
    return 0;
}

В этой статье мы рассмотрели три различных метода создания ромбовидных узоров в C++. Первый метод использует вложенные циклы, второй метод использует один цикл и условия, а третий метод использует рекурсию. Каждый метод предлагает свой подход к решению проблемы. Поняв эти методы, вы сможете расширить свои навыки программирования и решать более сложные шаблонные программы.

Не забудьте поэкспериментировать с различными значениями «n», чтобы создать ромбовидные узоры разных размеров, и изучить дальнейшие модификации кода для улучшения узоров. Удачи в программировании!