我如何使用标志编码?

时间:2011-11-28 11:43:03

标签: c++ flags

你好,我是c ++的初学者

以前从未使用过旗帜,我被告知我可以使用旗帜:

我需要使用标记编码填充此形状

这里是代码:

#include <iostream>

using namespace std;
int polygon[10][10] = 
{
    {1,1,1,1,1,1,1,1,1,1},
    {1,1,1,2,2,2,2,1,1,1},
    {1,1,1,2,1,1,2,1,1,1},
    {1,2,2,2,1,1,2,2,2,1},
    {1,2,1,1,1,1,1,1,2,1},
    {1,2,1,1,1,1,1,1,2,1},
    {1,2,1,1,1,1,1,1,2,1},
    {1,2,1,1,1,1,1,1,2,1},
    {1,2,2,2,2,2,2,2,2,1},
    {1,1,1,1,1,1,1,1,1,1},
};

int main()
{
    int row,column;
    char c='y';

    for (int row = 0; row<10; row++)
    { 
        for (int column=0; column <10; column++)
        {
            if(polygon[row][column]==1) cout << " ";
            else if(polygon[row][column]==2) 
            {
                cout << "+";
            }
            else 
                cout << " ";
        }
        cout << "\n";
    }
    system("pause");
}

此代码将打印出带顶部的方形形状 关于如何使用标志编码填写此形状的任何想法

例如在数组中我可以像  如果行和列到达前2,它将开始用0填充形状,当它遇到另一侧的另外2时,它停止并开始一个新行 直到形状充满

我不知道如何在这里使用旗帜我只知道概念

任何人都可以帮忙吗

while( polygon[row][column] == 2)
{
    row+=0;
    if (row == 2)
    {
     // in this part i need to go to the next line
    }
}

我的朋友给了我一些做这样的事情的提示,以填补形状,但我没有完全得到她

3 个答案:

答案 0 :(得分:0)

你可以做的是有一面旗帜上写着“我是谁?”。每次遇到形状边框时都需要打开此标志,如果它打开并且遇到另一个边框则将其关闭。

编辑:

水平边框是一项挑战。真正知道使用常规扫描的唯一方法是扫描直到行的结尾,并且只有在有另一个边框的情况下,你才有形状。

如果您可以假设遇到的第一个边框是水平的,则更容易,但识别底部水平边框仍然存在问题。

您可以通过首先从顶部扫描,找到带边框的第一行来解决这个问题。现在你可以知道那条线上没有“形状”区域。你可以从底部扫描找到带边框的最后一行。现在你可以知道这条线没有“形状”区域。剩下的就是用之前建议的算法在这两行之间进行扫描。

答案 1 :(得分:0)

假设画布必须包含一个简单的闭合多边形,你可以做什么:从边框,将所有外部字段更改为“3”,将它们“标记”为外部字段:

- start at a corner and go round the edges (assuming polygon can be on the edge).     
    is the field 1?  
      - make it a 3.  
      -  repeat this for all (not diagonal) neighbouring fields in a recursive way.
- when printing, use a different character for 
    - 1 (inside)
    - 2 (border)
    - other (outside)

答案 2 :(得分:0)

在编程中,术语“标志”通常用布尔类型表示。编程意义上的标志就像一个开关,它可以是(真)或关(假)。我注意到你的形状由12组成,并且只能猜测你的朋友建议你使用“标记编码”时它们意味着你使用的是bool数据类型。或者,在C ++中,0将在条件中评估为falseif (0)if (false)相同),而不是12您可以使用0代表1(意思是“不是形状的一部分”)和1代替2(意思是“形状的一部分”)。

从这里开始,您的比较会更简单一些,而不是if (polygon[row][column] == 2)您可以编写if (polygon[row][column]),如果polygon[row][column]的值不为零,则只会评估为真。 / p>