ユーザからの入力文字列を検証する必要があります。最終的には、2つの座標に分解する必要があります。すなわちa4 c3。そして、それらが座標になると、4つの別々のintに分割する必要があります。 a = 0 b = 1など。また、次の規則に従わなければなりません。C++の外部ライブラリを使用しない入力文字列の検証
終了信号に達すると、プログラムは終了します。 それ以外の場合、英数字以外の文字はすべて入力から破棄されます。 残っている場合は、単一の文字 'Q' です。その後、プログラムは終了します。 残っているものが最初の2文字のうちの1文字と1桁、最後の2文字のうちの1文字と1桁、それぞれの英数字の組がグリッドの有効範囲にある場合は、残りの文字は4文字で構成されます 次に入力受け入れられる。
私は完全に思考し、私の機能を台無しにしました。私がどこで訂正できるか教えてください。
データが有効である場合に限り、主に1つの文字列から4つの文字に進むのが難しいです。私が扱うことができる他のすべて。
これまで私がこれまで持っていたことは次のとおりです。
void Grid::playerMove()
{
string rawMove;
string pair1 = " ";
string pair2 = " ";
bool goodInput = false;
char maxChar = 'a';
char chary1, chary2;
int x11,x22,y11,y22;
for (int i =0; i<size; i++)
{
maxChar++;
}
while(!goodInput)
{
cout<<"What two dots would you like to connect? (Q to quit) ";
cin>>rawMove;
rawMove = reduceWords(rawMove);
if (rawMove == "Q")
{
cout<<"end game";
goodInput = false;
}
else if (rawMove.size() == 4)
{
for(int j=0;j<2;j++)
{
if (pair1[j] >='a' && pair1[j] <=maxChar)
{
chary1 = pair1[j];
}
else if(pair1[j] >=0 && pairl[j]<=size+1)
{
x1 = pair1[j];
}
}
for(int k=0;k<2;k++)
{
if (pair2[k] >='a' && pair2[k] <=maxChar)
{
chary2 = pair2[k];
}
else if(pair2[k] >=0 && pair2[k]<=size+1)
{
x2 = pair2[k];
}
}
}
if(char1 != NULL && char2 != NULL && x1 !=NULL && x2 != NULL)
{
for (int m = 0; m <= size m++)
{
if (char1 == m;)
{
x1 = m;
}
}
for (int n = 0; n <= size n++)
{
if (char2 == n)
{
x2 = n;
}
}
}
}
最後の目標は、それぞれの値でx1、x2、y1、およびy2を持つことです。
私は外部ライブラリを持つことはできません。
私は ''を提案します。これは言語標準の一部です。 –
普通の落とし穴チェックでは、 'cin'が空白で止まることに気づいていますか? 'reduceWords'とは何ですか、どのように定義されていますか? –
これは今でもコンパイルできますか? Char1、Char2、x1、&x2はどこにも定義されていません(私が見ることができます)。 – Aaron