c++ - 修改为具有可配置数量的星星 "*"

标签 c++

我设法打印出我想要的星星图案的输出,但现在我想要一个可配置的星星“*”数量并自动计算相应的行数。

我尝试了几种方法,但输出似乎已关闭。如果有更好的方式来显示输出,请指导我。

int i, j, k,l;
k = 1;
l = 11;
for (i = 0; i < 6; i++)
{
        for (j = 0; j < k ; j++)
        {
            cout << "* ";
        }
        cout << "- ";
        k += 2;
        for (j = 0; j < l; j++)
        {
            cout << "* ";
        }
        l -= 2;
    cout << endl;
      }

* - * * * * * * * * * * *
* * * - * * * * * * * * *
* * * * * - * * * * * * *
* * * * * * * - * * * * *
* * * * * * * * * - * * *
* * * * * * * * * * * - *

Snapshot

最佳答案

如果给出了行数,那么可以很容易地计算出结果的列数。查看您的模式,然后您会发现必要的列数是行数乘以 2 + 1。

这里有一个可能的解决方案:

#include <iostream>

int main()
{
    std::cout << "Enter the number of rows for the pattern: ";

    unsigned int numberOfRows{ 0 };
    std::cin >> numberOfRows;

    // Number of columns is always number of rows * 2 + 1
    unsigned int numberOfColumns{ numberOfRows * 2 + 1 };
    unsigned int positionOfDash{ 1 };
    // Print the pattern
    for (unsigned int row = 0; row < numberOfRows; ++row) {
        for (unsigned int col = 0; col < numberOfColumns; ++col) {
            // Output dash in desired column or else star
            std::cout << (col == positionOfDash ? '-' : '*') << ' ';
        }
        positionOfDash += 2;
        std::cout << '\n';
    }
    return 0;
}

请注意:当然还有大量其他可能的解决方案。 . .

关于c++ - 修改为具有可配置数量的星星 "*",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56919787/

相关文章:

C++ 精度 : String to Double

c++ - 为什么将 xor 与文字而不是反转一起使用(按位不是)

c++ - 当键不唯一时解析键值对

c++ std::vector performance [需要引用]

c++ - 模板类中非模板方法的模板特化

c++ - QT QStackedLayout问题

c++ - 调用从 C++ 返回 KIND=10 复数值的 Fortran 函数

c++ - cLion & cMake 不调试/打印错误

c++ - 如何使用 friend 类但引入较少的依赖

c++ - gSOAP - 修改 HTTP POST header