Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何用C+;中的文本制作大小可变的棋盘+;?_C++_Loops_Text - Fatal编程技术网

C++ 如何用C+;中的文本制作大小可变的棋盘+;?

C++ 如何用C+;中的文本制作大小可变的棋盘+;?,c++,loops,text,C++,Loops,Text,如何用文本制作大小可变的棋盘?我可以使用以下代码制作由单个字符组成的棋盘: #include <iostream> using namespace std; int main() { char C; int length; int width; int count = 0; int N; int row = 0; int col = 0; cout << "Input C" << endl;

如何用文本制作大小可变的棋盘?我可以使用以下代码制作由单个字符组成的棋盘:

#include <iostream>
using namespace std;

int main()
{
    char C;
    int length;
    int width;
    int count = 0;
    int N;
    int row = 0;
    int col = 0;

    cout << "Input C" << endl;
    cin >> C;
    cout << "Input length" << endl;
    cin >> length;
    cout << "Input width" << endl;
    cin >> width;
    cout << "Input N" << endl;
    cin >> N;

    for (row = 0; row < N; ++row) {
        if (row % 2 == 1) {
            for (count = 0; count < length; count++) {
                {
                    cout << "-";
                }
                cout << "";
            }
        }
        for (col = 0; col < N; ++col) {
            for (count = 0; count < length; count++) {
                {
                    cout << C;
                }
                cout << "";
            }
            if (col != N) {
                for (count = 0; count < length; count++) {
                    {
                        cout << "-";
                    }
                    cout << "";
                }
            }
        }
        cout << endl;
    }
    printf("\n");
}
#包括
使用名称空间std;
int main()
{
字符C;
整数长度;
整数宽度;
整数计数=0;
int N;
int行=0;
int col=0;
coutc;
库特长度;
库特宽度;
cout N;
用于(行=0;行老实说,我试着检查你的代码并找出错误,但最终我从头开始重写了这个问题。这都是关于嵌套循环的,你需要相当多的嵌套循环来进行细粒度控制

为我实现这一技巧的代码(我希望注释有帮助):


解决这类问题的方法是将其分解为更小的问题,并不断分解问题,直到最终得到可以轻松转换为代码的非常小的任务

例如,在回顾你的计划大纲后,有一件事变得非常清楚:

假设我们使用标签“逻辑行”引用包含棋盘中一行图像的一行或多行文本或字符串的物理行。在上面的示例中,每个逻辑行由四个物理行组成。然后,第一件非常清楚的事情是,给定任何值N,您将创建N对逻辑行。在每对中,第一个逻辑行row将在奇数列中包含棋盘格,然后第二个逻辑行将在偶数列中包含棋盘格字符

因此,我们可以自信地说,执行所需操作的代码如下所示:

for (int i=0; i < N; ++i)
{
    // Draw the odd checkboard logical row

    // Draw the even checkboard logical row
}
for (int j=0; j<L; j++)
{
    // Draw a single line in a logical row.
}
for(int i=0;i
因此,当N=3时,您将得到一个由六行组成的棋盘,如所需输出的示例所示。当N=4时,您将得到八行,依此类推

现在问题基本上简化为绘制一个逻辑棋盘行。然而结果是,生成的代码将被塞进这个for循环中。因此,我们可以将其放在一边

第二个容易分解的步骤是每个棋盘行由L行物理行组成

因此,生成单个逻辑棋盘行的代码将如下所示:

for (int i=0; i < N; ++i)
{
    // Draw the odd checkboard logical row

    // Draw the even checkboard logical row
}
for (int j=0; j<L; j++)
{
    // Draw a single line in a logical row.
}

for(int j=0;jThanks对于这一点,它是有效的,但我想知道你是如何处理这个问题的。你的算法是什么来解决这个问题的?我真的很想知道,谢谢你的帮助!这是一个蛮力算法。它在每个“单元”(C或“”)中循环并决定在其中绘制什么。这就是
行%2==col%2
条件很重要的地方。