1

文字形式で番号0〜8のchar配列があります

Board[0] = '0';
Board[1] = '1';
Board[2] = '2';
Board[3] = '3';
Board[4] = '4';
Board[5] = '5';
Board[6] = '6';
Board[7] = '7';
Board[8] = '8';

そしてそれらのいくつかはユーザー入力に基づいて「x」または「o」のいずれかに変更されますが、「x」または「」ではないそれらの総数を知ることができるように方法を理解する必要がありますo'。

つまり、9つのうち4つが「x」または「o」のいずれかである場合、残り5つであるという事実を取得できる必要があります。私は使用しようとしfor each(char c in Board)ていて、「x」または「o」ではない文字をリストするためにそれを取得した場所に十分に到達しましたが、残りの数を送信するためにそれを取得する方法がわかりませんint値。これは私が得た限りです。

    for each(char c in Board)
    {
        if (c != 'x' && c != 'o')
        {

        }
    }
4

4 に答える 4

2

あなたは試すことができます

auto n = std::count_if(Board, Board+9, std::isdigit);
于 2012-12-10T20:12:24.020 に答える
1

これらの文字の数をカウントするカウンターを定義する必要があります (インクリメントすることにより)。

int n = 0;
for (char c : Board)
{
    if (c != 'x' && c != 'o')
    {
        n++; // increment n by 1
    }
}

std::cout << n << '\n'; // use the result
于 2012-12-10T20:12:15.340 に答える
1

std::isdigitとを組み合わせて使用​​できます。std::count_if

#include <cctype>    // for std::isdigit
#include <algorithm> // for std::count_if

int num = std::count_if(Board, Board+9, std::isdigit);
于 2012-12-10T20:12:36.777 に答える
0

数字だけが必要ではなく、0 から 8 の間の数字だけが必要であると仮定すると、次のようにすることができます。

int count = 0;

for each(char c in Board)
{
    if (c >= '0' && c <= '8')
    {
        count++;
    }
}

cout << count << " are digits between 0 and 8 (inclusive)" << endl;
于 2012-12-10T20:20:51.063 に答える