c ++实现函数搜索数组

时间:2015-06-26 05:43:16

标签: c++ loops

作为家庭作业,我被赋予了一项任务,但我不确定我是否做得正确。任务是:

在c ++中实现一个函数,用于搜索给定范围内的值。它应符合以下描述:

  1. INPUT - 未排序的数组“A”和两个整数“I”和“U”
  2. OUTPUT - 如果“A”包含的元素大于“I”且小于“U”,则为TRUE,否则为FALSE。
  3. 到目前为止,我已经提出了这个问题。它有效,但我不确定这是否是正确的方法呢?

    int main()
    {
      int array1 [5] = {9, 8, 14, 7, 5};
      int userinput1 = -1;
      int userinput2 = -1;
      int index = -1;
      bool found = false;
    
      cout << "please enter a number" << endl;
      cin >> userinput1;
      cout << "please enter another number" << endl;
      cin >> userinput2;
    
      for(index = 0; index < 5; index++)
    
      {
          if(userinput1 >= array1[index] && userinput2 <= array1[index])
       {
           found = true;
           cout << "Congratulations this number exists" << endl;
    
           break;
       }
     }
    
    if (!found) cout << "sorry this number doesn't exist" << endl;
    
    return 0;
    
    }
    

4 个答案:

答案 0 :(得分:0)

您应该先尝试一下,看看它是否按预期工作。除此之外,乍看之下说明大于或小于,但您使用的是>=<=

同样假设userinput1是&#34;我&#34;并且userinput2是&#34; U&#34;,它正在倒退。应该是if(userinput1 < array1[index] && userinput2 > array1[index])

答案 1 :(得分:0)

当您的作业符合大于&#34; I&#34;的标准时,您的作业是否要求您显示该值?并且不到&#34; U&#34;? 除此之外,就像之前所说的那样,唯一需要改变的是将你的不平等符号改为大于或小于大于或等于,小于或等于。

答案 2 :(得分:0)

我认为,做同样事情的更好方法是使用仿函数。请参考以下代码

#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>

struct isInRange
{
    isInRange(int st,int ed) : _st(st),_ed(ed){}
    int _st;
    int _ed;
    bool operator()(int num)
    {
        return (num >=_st && num <=_ed);
    }
};

int main(void)
{
    std::vector<int> intVec(5);
    intVec.push_back(4);
    intVec.push_back(9);
    intVec.push_back(7);
    intVec.push_back(2);
    intVec.push_back(3);

    std::vector<int>::iterator res = std::find_if(intVec.begin(),intVec.end(),isInRange(10,8));
    if(res == intVec.end())
    {
        std::cout<<"Not Found"<<std::endl;
    }
    else
    {
        std::cout<<"Found"<<std::endl;
    }

    return 0;
}

答案 3 :(得分:0)

你的方式没有错,有多种方法可以解决同样的问题(欢迎来到编程世界!)。 你的方法是解决问题的一种方法,这是正确的, 我只想根据您的问题要求考虑使用< >而不是>= <=