作为家庭作业,我被赋予了一项任务,但我不确定我是否做得正确。任务是:
在c ++中实现一个函数,用于搜索给定范围内的值。它应符合以下描述:
到目前为止,我已经提出了这个问题。它有效,但我不确定这是否是正确的方法呢?
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;
}
答案 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)
你的方式没有错,有多种方法可以解决同样的问题(欢迎来到编程世界!)。
你的方法是解决问题的一种方法,这是正确的,
我只想根据您的问题要求考虑使用< >
而不是>= <=
。