如何在数组中找到最小编号的索引号?
How to find the index No. of mininum no. in an array?
只有当最小数是奇数时,我才必须打印出最小数的索引。我有代码,但我得到错误的答案?这是完整的代码
#include <iostream>
using namespace std;
int main()
{
int array[8] = { 0, 0, 0, 0, 0, 0, 0, 0};
int min = array[0];
int max = array[0];
int indexOfMin = 0;
int indexOfMax = 0;
int found = 0;
cout << "Enter the array: ";
int k;
for(k = 0; k <= 7; k++){
cin >> array[k];
}
for (int i = 0; i < 7; i++){
if(array[i] <= min){
min = array[i];
indexOfMin = i;
}
}
for (int i = 1; i < 8; i++){
if(array[i] % 2 != 0){
found = (array[indexOfMin] % 2) != 0;
}
else{
found = 0;
}
}
if(found == (array[indexOfMin] % 2) != 0){
cout << indexOfMin << min << endl;
}
else{
cout << "not found";
}
return 0;
}
我认为问题出在最后cout
.对于这个给定的数组,答案应该是 3 和 6
您的问题是,如果任何数字是奇数,则打印最小值。
for (int i = 0; i < 7; i++){
if(array[i] % 2 != 0){
found == 1;
}
}
此代码查看数组中的每个数字,如果其中任何一个是奇数,则设置标志。您只需要检查一个数字。因此,您可以将上面的代码替换为以下内容:
found = (array[indexOfMin] % 2) != 0;
或更优雅
found = array[indexOfMin] & 1;
。假设您实际上找到了一个值,如果您没有正确初始化min
,就不会发生这种情况。从您的示例中,看起来min
已初始化为零。您应该使用较大的数字(例如INT_MAX
(来确保array[0]
始终小于min
,或者在初始化后显式将min
设置为array[0]
,然后跳过测试array[0]
。
注意:目前,您的代码包含一个额外的错误。如果要将min
初始化为array[0]
则需要在array[0]
包含有效数据之后执行此操作,而不是事先。如果用户输入8 7 6 5 4 3 2 1
,编写的代码将打印错误的索引。
相关文章:
- 数组索引的值没有增加
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 查找最接近的大于当前数字的数字的索引
- 在C++中调整向量中的索引
- 重载元组索引运算符-C++
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为std::string的某个索引赋值
- 并行用于C++17中数组索引范围内的循环
- 跟随整数索引列表的自定义类迭代器
- 如何在for循环中包含两个索引值的测试条件
- D3D11-将混合权重和索引传递到顶点着色器
- 将转换字符键入 int 以用作向量C++的索引
- 在 C++ 中访问数组负索引处的内存不会返回垃圾
- 如何为圆环创建索引
- 在子集化后将包含索引号的列表列表映射到标准索引序列
- 查找字符在两个索引之间出现的次数
- Azure Kinect 使用正文索引映射裁剪正文
- 如何查找哪个类对象位于数组的特定索引上(多态性)
- OPENCV视频关注设备索引 /设备编号
- 使用带有新 API 的编号索引的转换无效