Сравнивая цифры, чтобы убедиться, что они уникальны? - PullRequest
0 голосов
/ 05 февраля 2011

У меня есть программа, в которой вы вводите 5 разных чисел в массив.У меня возникли проблемы при попытке выяснить, как сделать так, чтобы число вводилось не более одного раза.Может ли кто-нибудь помочь мне или, по крайней мере, указать мне правильное направление?Это на C ++, если это вообще помогает.

Ответы [ 3 ]

3 голосов
/ 05 февраля 2011

Вы можете использовать std::set или (в зависимости от того, для чего используются цифры), std::map.

std::set кажется вам лучшей ставкой здесь.

0 голосов
/ 05 февраля 2011

У вас есть массив, поэтому вам нужно только пройти через него и проверить, совпадает ли текущее число с любым из чисел в массиве; если да, вернуть true при первом совпадении и пропустить число.

Ниже приведенопример кода:

// pass the array and the number you are checking for existence
int isRepeating(int *array, int unique)
{
    int i, l = sizeof(array) / sizeof(int); // find size of the array

    // loop thru the array and match any value
    for (i = 0; i < l; i++)
    {
        // if matches, return positive
        if (a[i] == unique) return true;
    }

    // otherwise return negative
    return false;
}

int main(int argc, char *argv[])
{
    // out array of existing numbers
    int array[5] = {1, 2, 3, 4, 5};

    // the number we want to insert
    int nextOne = 3;

    // we check it its already in existence, if so, take appropriate actions
    if (isRepeating(array, nextOne)) {
        std::cout << "Oops, number " << nextOne << " is already in existence." << std::endl;
    }

    // your logic here

    return 0;
}

ps Мне очень нравится решение set ().

0 голосов
/ 05 февраля 2011

Ну, один из способов - запустить проверку при добавлении каждого числа в массив.Поэтому, если у вас есть существующий массив 3 8 15 9, и перед вставкой числа убедитесь, что он не равен ни одной из предыдущих записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...