你好我们在这里寻求帮助来完成我的计划。以下代码运行但它不执行它应该执行的所有任务。程序应该要求用户输入要存储在数组中的5个数字。其次,它应该询问用户他想要找到的数组中的数字。之后,如果在数组中找到了数字,它应该显示它的位置(索引/索引),如果没有,它应该显示该数字不在数组中。
我的问题是,即使要搜索的数字不在数组中,它仍会显示索引。另一个问题是,当我在数组中输入公共数字时,例如我想搜索3:{3,3,54,0,8}它只显示“第一个”数字3的索引并且不显示“第二”三号的索引。请帮助我。
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
int list[5], a, loc = 0, searchItem, listLength;
bool found = false;
cout<<"Enter 5 numbers: "<<endl;
for(a = 0; a < 5; a++)
cin >> list[a];
cout<<"\n\tEnter the number you want to find :";
cin>>searchItem;
while(loc < listLength && !found)
if(list[loc] == searchItem)
found = true;
else
loc++;
if(found)
cout << "\n\t\t " << searchItem << " is found at index " << loc << endl;
else
cout << "\n\n\tThe " << searchItem << " is not in the array" << endl;
getch();
}
答案 0 :(得分:4)
假设,4在数组中存在两次。在while循环中,当找到4时,找到变量设置为true。这是循环的破坏条件。正如你所写:
while(loc < length && !found)
这就是为什么它只能找到一次数字4,它存在两次。试着解决这个问题。 (提示:为了方便起见,你可以使用for循环,或者在每次迭代结束时设置found = false)
如果元素不在数组中,不显示它的索引。再试一次。
修改强> 就像你要求的那样,这就是你的方式。 用替换 ,只需将其工作:
int list[5], a, loc = 0, searchItem, listLength;
bool found = false;
cout<<"Enter 5 numbers: "<<endl;
for(a = 0; a < 5; a++)
cin >> list[a];
cout<<"\n\tEnter the number you want to find :";
cin>>searchItem;
for(loc = 0;loc < 5; loc++)
{
if(list[loc]==searchItem)
{
cout << "\n\t\t " << searchItem << " is found at index"<<loc<<endl;
}
else
cout << "\n\n\tThe " << searchItem << " is not in the array"<<endl;
}