c ++检查整数是否在数组中

时间:2017-08-22 19:45:32

标签: c++ arrays

我需要帮助。我的作业说:

  

要求用户输入数组的10个整数和整数v。程序必须搜索v是否为10个整数数组。如果整数v在数组中,或者“v不在数组中”,如果不是,程序会写“v在数组中”。

我的代码似乎很好,但它无法正常工作。请帮忙。

这是我的代码:

#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;

int main () {
    const int size = 10;
    int vars[size],temp = 0,v = 0;
    int boolean = 0,choice;
    string check = "";
    for(int x = 0; x<10; x++){
        cout<<"Enter 10 Numbers: ";
        cin>>vars[x];
    }

    do{
        cout<<"Enter V variable :";
        cin>>v;

        for(int x = 0; x <10; x++)
        {
            temp = vars[x];
            if(temp == v){
                check = "v is in the array";
            }
            else{
                check  = "v is not in the array";
            }
        }
        cout<<check;
        cout<<"\nContinue ?"<<endl<<"[1]yes"<<endl<<"[2]no"<<endl;
        cin>>choice;
        system("cls");
        for(int x = 0; x<10;x++){
            cout<<"index" <<x<<" = "<<vars[x]<<endl;
        }
    } while(choice != 2);
    return 0;
}

3 个答案:

答案 0 :(得分:2)

尽管没有任何IO错误检查,但您应该根据已完成的迭代建立消息check值,而不是基于每次迭代。

此:

    for(int x = 0; x <10; x++)
    {
        temp = vars[x];
        if(temp == v){
            check = "v is in the array";
        }
        else{
            check  = "v is not in the array";
        }
    }

    cout << check;
无论如何,

将执行循环迭代size次,每次迭代重置check并仅打印 last 迭代结果。你想要的是这样的:

    int x = 0;
    for(; x <size && vars[x] != v; ++x);

    if (x == size)
        std::cout << v << " is NOT in the array";
    else
        std::cout << v << " is in the array";

或者更好的是,使用标准库并停止重新发明轮子:

    auto it = std::find(std::begin(vars), std::end(vars), v);
    if (it == std::end(vars))
        std::cout << v << " is NOT in the array";
    else
        std::cout << v << " is in the array";

答案 1 :(得分:0)

您正在运行循环10次。即使第一个数字是您正在寻找的答案,循环的第二次迭代将重写您的&#34;检查&#34;变量

中断if以退出循环或更改逻辑。

您看起来像个初学者,所以请参阅this以阅读有关break语句的更多信息。

答案 2 :(得分:0)

你的程序是正确的,除了最重要的是在你的循环中,当条件成功意味着找到数字V时你必须break n命令不要在下一次迭代中改变。因此,尽管发现它不会继续迭代数组中断的所有元素。

for(int x = 0; x <10; x++){
    if(vars[x] == v){
        check = "v is in the array";
        break;// You must add break to get out of the loop with `check = "v is in the array"`.
    }
    else{
            check  = "v is not in the array";
        }
    }