【问题标题】:check if array element value already existed when user input检查用户输入时数组元素值是否已经存在
【发布时间】:2013-11-27 02:52:31
【问题描述】:

如何检查数组是否已经包含值?

例如, 输入: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; 
            }
        } 

}

【问题讨论】:

  • 就是这么简单的事情。当然,您可以自己尝试一下。通常,我们会要求该论坛的发帖者展示他们自己所做的尝试。如果你太害羞而不敢这样做,那么你就不太可能得到任何帮助。
  • 是的,我在上面添加了我的尝试。我不确定为什么它不起作用。可能是我的逻辑
  • 问题只是你放置bool existed = false;的位置。移动它,使其位于第二个 for 循环 bool existed = false; for(int x = 0; x &lt; 5; x++){ ... 之前。您需要将existed 设置为 false 每次 测试是否存在,而不仅仅是在程序开始时设置一次。
  • 哦,谢谢它现在可以工作了。

标签: c++


【解决方案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...");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多