1

嗨,我想用 C++ 制作一个坐标系。我将从用户那里获得一些(x,y)坐标并使用它我需要制作一个坐标系(更多的地图)样式。我怎样才能做到这一点?它需要如下图所示。我应该使用二维数组还是向量以及如何使循环以不同的方式进行标记?

(2,0)(4,3)(7,8) 需要看起来像

 **1************
 ***************
 ***************
 ***************
 ***1***********
 ***************
 ***************
 ********1******

这是我目前得到的代码,但问题是我不能在其中标记多个坐标。我只是使用了 2 个 for 循环来做到这一点

for(int i = -6; i < 7; i++) 
    if (i < 0) 
        cout<<" "<<i; 
    else 
        cout<<"  "<<i; 
cout<<endl; 

for(int i = 0; i < 15; i++) 
    { 
        cout<<(char)(i + 49); 
        for(int j = -6; j < 7; j++) 
        if(i == y - 1 && j == x) 
            cout<<" x "; 
        else 
            cout<<" . "; 

        cout<<(char)(i + 49)<<endl; 
    } 

请指教。谢谢 !!

4

3 回答 3

5

我建议您使用其中一个vector<string>vector<vector<char> > 什至vector<vector<string> >取决于您打算在单元格中存储什么。如果单元格是单个字符,那么第一个选项可能是最好的。之后创建地图真的很容易:

int n,m;
cin >> n >> m;
vector<string> a(n, string(m, '*');

我不确定“。”是什么。和上面代码中的“x”,但我想象剩下的就是输入几对坐标并vector<string>用“1”替换相应的元素。

希望这可以帮助。

于 2012-10-09T11:59:10.360 回答
1

我建议使用std::setofstd::pair而不是std::vector- 不需要将整个网格保存在内存中,我们只需要点。

http://liveworkspace.org/code/f434521b804485f16786556762780448

于 2012-10-09T16:52:18.160 回答
0

要回答您的其他问题,您可以使用一个循环来进行更改,并使用另一个来显示您的结果。使用 izomorphius 的建议,如果您使用列表来存储坐标对,它看起来像这样:

vector<string> matrix ;
list<pair> PairList ;

for (list<pair>::const_iterator it = PairList.beguin(); i < PairList.end(); it++) {
    matrix[ (*it).second ][ (*it).first ] = "." ;
}

并显示结果:

for (int i = 0; i < matrix.size; i++) {
    cout << matrix[i] << endl ;
}
于 2012-10-09T13:30:08.437 回答