首页 > 解决方案 > 如果找到,则尝试输出所有索引值

问题描述

我有一个家庭作业,除了一部分,我几乎完成了。我的这部分作业要求我生成一个包含 10 个介于 15 和 20 之间的随机值的数组,然后要求用户输入一个整数并在数组中搜索该整数。如果找到整数(以及整数的任何重复项),则应输出整数的索引值。如果未找到整数,则应输出文本“未找到整数”。

好的,所以我已经完成了所有内容,除了我应该输出是否找到整数的部分。

我的代码块如下所示:

..................................................... ......................

search=0;
cout<<endl<<"Enter an integer to search for in the array: "<<endl;
cin>>search;
cout<<endl;

for(int i=0;i<10;i++)
{
     if(search == array[i])
     {
     cout<<"Integer "<<search<<" was found at location "<<i+1<<"."<<endl;
     }

     else
     {
     cout<<"Integer "<<search<<" was not found."<<endl;
     }
}        
break;

..................................................... ......................

我进行此设置的方式不符合作业要求。

说我随机生成的数组就是这串数字——

[16] [18] [16] [20] [19] [15] [15] [20] [19] [16]

如果我输入“16”作为我要搜索的整数,输出将是 -

“在位置 1 找到了整数 16”

“未找到整数 16”

“在位置 3 发现整数 16”

“未找到整数 16”

“未找到整数 16”

“未找到整数 16”

“未找到整数 16”

“未找到整数 16”

“未找到整数 16”

“未找到整数 16”

“在位置 10 找到了整数 16”

如果我输入一个不在数组中的整数,输出将重复 10 次。

我想改变它,这样如果我输入“16”,我就会得到——

“在位置 1 找到了整数 16”

“在位置 3 发现整数 16”

“在位置 10 找到了整数 16”

如果我输入一个不在数组中的整数,我只想-

“未找到整数 (x)”

抱歉,如果这真的很简单,这是我的第一个 StackOverflow 问题和我的第一个编程课,教授完全用千篇一律的 youtube 视频“教”。我什至还没有听到他的声音。

提前感谢您的帮助。如果您需要我提供更多信息,请告诉我。

标签: c++arrays

解决方案


不需要那个“break”声明。您要做的是检查随机生成的数组中是否存在该数字。如果可用,则需要打开“found_flag”。当“for循环”结束并且“found_flag”仍然关闭时,这意味着您正在搜索的数字不存在。

#include <iostream>
using namespace std;

int main(){

  int search;
  bool found_flag = false;
  cout<<endl<<"Enter an integer to search for in the array: "<<endl;
  cin>>search;
  cout<<endl;

  for(int i=0;i<10;i++)
  { 
    if(search == array[i])
    {
     cout<<"Integer "<<search<<" was found at location "<<i+1<<"."<<endl;
     found_flag = true;
    }
 }

  if(!found_flag)  cout<<"Integer "<<search<<" was not found."<<endl;

 return 0;
}   

推荐阅读