1

こんにちは、C++ を使用して座標系を作成したいと思います。ユーザーからいくつかの (x,y) 座標を取得し、それを使用して座標系 (より多くのマップ) スタイルを作成する必要があります。どうすればこれを達成できますか?下の図のように見える必要があります。2D 配列またはベクトルを使用する必要がありますか? また、ループに別の方法でマーキングを行うにはどうすればよいですか?

(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> >セルが 1 文字の場合は、おそらく最初のオプションが最適です。その後、マップの作成は非常に簡単です。

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

「。」が何であるかわかりません。上記のコードでは「x」と「x」を使用していますが、残っているのは、いくつかの座標のペアを入力し、それぞれの要素vector<string>を「1」に置き換えることだけだと思います。

お役に立てれば。

于 2012-10-09T11:59:10.360 に答える
1

代わりに ofstd::setを使用することをお勧めします- グリッド全体をメモリに保持する必要はありません。ポイントが必要なだけです。std::pairstd::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 に答える