0

配列にすでに値が含まれているかどうかを確認するにはどうすればよいですか?

例: 入力:1 出力:1

入力:1 エラー!:番号が存在しました

入力:2 出力:2

ユーザー入力が配列に既に存在する場合、エラーが表示され、別の値が入力されるまで、再度入力するように求められます。別の値を入力すると、その値が配列に追加されます。入力された値が要素の値と同じ場合、配列には追加されません。

int num[5], temp;
bool val = true, existed = false;

for(int i = 0; i < 5; i++){
    val = true;

        while(val){

            cout << "\nPlease enter a number:";
            cin >> temp;

            for(int x = 0; x < 5; x++){
                if(temp == num[x]){
                    existed = true;
                }
            }

            if(existed){
                cout << "Number existed";
            } else {
                num[i] = temp;
                cout << "Your number" << num[i];
                val = false; 
            }
        } 

}
4

1 に答える 1

1

チェックを行うための短い関数を書くことができます:

bool alreadyExists(int *array, int array_size, int value)
{
    for (int i = 0; i < array_size; i++)
        if (array[i] == value)
            return true; // we found the same value, return true

    return false; // if we get here we have not found it
}

で呼び出す

int input = 1;
if alreadyExists(num, 5, input)
{
    printf("already exists\n");
}
else
{
    printf("Ok to add...");
}
于 2013-11-14T07:27:04.583 に答える