2016-04-04 24 views
0

まず第一に、私は完全なnoobだと言う必要があります。 私はそれを行うためにいくつかの海軍の戦闘シミュレーションを作ろうとしています。ランダムな文字と数字のジェネレータを作成しました ここにコードがあります。 ところで、私が達成したいのは、ユーザーが指定した船の場所に直面する変数(推測)を1つだけ持つことです。C++エラー: 'int'から 'const char *'への無効な変換[-fpermissive] |

char letters[]= {'A','B','C','D','E','F','G','H','I','L'}; 

\\ lots of code 

//RandomAI 
int G = rand() % 10 + 1; 
int nOut = rand() % 10 + 1; 
char lOut = letters[G]; 
string Guess = lOut + nOut; 
return 0; 
+0

'nOut'は整数です。したがって、出力がどの程度であるべきかは不明です。 'B3'、' E7'などのようなものでしょうか?または、文字に7を追加します(文字通り)。 '' A '+ 7'は '' H''に等しいでしょうか? – PaulMcKenzie

答えて

3

string Guess = lOut + nOut;std::stringを生成しませんintchar種類を追加します。これに対処する1つの方法は、文字列を作成し、それに追加することです:

std::string guess = lOut + std::to_string(nOut); 

これはあなたのコンパイラエラーを解決しますが、あなたはまだここに論理エラーがあります。

int G = rand() % 10 + 1; 

rand() % 10 + 1生成されます1と10の間の値。あなたは、Cでのインデックスが++ではない1ので+1部分を落とし、0から始まるので、0から9までの間の数をしたい:

int G = rand() % 10; 

そうしないと、誤ってlettersで範囲外のインデックスにアクセスしようとする場合がありあなたは「A7」や「F2」、これは(あなたが追加しintcharことができないので)stringにすべてを変換することです達成するための一つの方法のような出力文字列を望んでいたと仮定すると、

+2

'nOut'は整数なので、OPが何を期待しているのか分かりません。 – PaulMcKenzie

+0

@PaulMcKenzie:そうですね、私は再び文字にインデックスを付けることを前提にしていました。しかし、それは間違っていると思う。彼らはおそらく 'B3'のようなものを望んでいたでしょう。私は私のポストを更新します。 – AndyG

+0

@PaulMcKenzie:「海軍戦闘シミュレーション」は「戦艦」を意味すると仮定します。 – AndyG

0

。まだC++ 11とstd::to_string()へのアクセスを持っていない人のために、あなたが使用できます。

char letters[]= {'A','B','C','D','E','F','G','H','I','L'}; 
int G = std::rand() % 10; 
int nOut = std::rand() % 10; 
char lOut = letters[G]; 
std::stringstream ss; 
ss << nOut; 
std::string Guess = lOut + ss.str(); 
関連する問題