2016-09-10 17 views
-3

私はこの問題を解決していると私は2つの他のcomditions場合に私は立ち往生です。 bからgまたは2-7からチェックする方法がわかりません。私はまた、8つすべてのスポットが利用可能かどうかをチェックする方法について混乱しています。 ifやforループを使ってコードを繰り返したりチェックしたりするときに、私はいつも混乱します。ここで私はこれまで持っているものです: 問題: http://codeforces.com/problemset/problem/710/a場合は、場所のチェックの条件

コード今のところ:それは文字列リテラルであるように、すべての

#include <iostream> 
#include <string> 

using namespace std; 

int main(){ 

    string c; 

    cin >> c; 

    if(c == "a8" || c == "h8" || c == "a1" || c == h1){ 

    cout << "3 moves only available\n" << endl; 
    } 
    // confused on this case 
    if(c == c[0](){ 

     cout << "5 moves only available\n" << endl; 

    } 
    // and this case 
    if(c ==){ 

     cout << "all 8 moves are available\n" << endl; 
    } 

} 
+0

注意を扱ってきたように、コードが「doesnのことtコンパイルします。最初のエラーは何だと思いますか? –

+0

'h1'とは何ですか? 'c == c [0]()'? – Li357

+0

この@ Cheersandhthを提出する前にメモが既に取られています。-Alfと* h1 *はチェックする必要のあるコーナースポットです。** c == c [0]()**は* //混乱している場所ですこのケース*は、基本的に行と列をチェックしようとしています – Kdrumz

答えて

0

まず、h1は引用符にする必要があり、代わりに次のようになります。 "h1"

第2に、わずか5つの動きがある場合は、ボードの側面に沿っていますが(コーナーではありません)。したがって、ファイル(列)が'a'または'h'であるかどうか、またはランク(行)が'1'または'8'の場合のみチェックする必要があります。 else ifを使用するとコードが短縮され、コーナーである場合は2度出力されません。

だからあなたの第二の場合は次のようになります。

else if (c[0] == 'a' || c[0] == 'h' || c[1] == '1' || c[1] == '8){ 
    cout << "5 moves only available\n" << endl; 
} 

最後のケースはただである:

else{ 
    cout << "all 8 moves only available\n" << endl; 
} 

他のすべてのケースが

+0

私はコードを実行し、テストケースで失敗しました。特にh1、3ではなく5が出力されましたが、なぜ@Benson Linがなぜ編集できないのか分かりません。 – Kdrumz