搜索最小值
Searching the minimum value
我正在尝试使用C执行一个程序,该程序必须搜索向量的最小值,但我做错了什么。使用数字为1,2,3,4,5在矢量中,它可以正常工作,但是当我尝试使用数字时:22、72、123、45、81,它对我说,最低的一个是45。<<<<<<<<<<
#include <iostream>
using namespace std;
const int MAX= 5;
int main(){
int vector[MAX], i=0;
for(i=0;i<MAX;i++){
cin>>vector[i];
}
int min=vector[0], posicio;
for(i=1;i<MAX;i++){
if(vector[i]<vector[i-1]){
min=vector[i];
posicio= i;
}
}
cout<<min<<"#"<<posicio<<endl;
return 0;
}
您仅从矢量中选择两个元素来比较以下内容:
if(vector[i]<vector[i-1]){
因此,这种条件仅给您至少这两个,而不是整个数组的条件。
将您的病情更改为
if(vector[i]<min){
您的代码将按预期运行。
首先没有初始化变量posicio
。因此,通常情况下该程序的行为不确定。
,其次,您在向量中找到了矢量中的最后一个元素,以使条件vector[i]<vector[i-1]
是正确的。确实是这个序列22、72、123、45、81这样的元素是45。
如果您需要找到最小元素ypu应该写
int min=vector[0], posicio = 0;
^^^^^^^^^^^
for(i=1;i<MAX;i++){
if( vector[i] < min ){
^^^^^^^^^^^^^^^^^^^^^
min=vector[i];
posicio= i;
}
}
如果您只需要确定数组的最小元素的位置,则可以写
int posicio = 0;
for ( i = 1; i < MAX; i++ ){
if( vector[i] < vector[posicio} ){
posicio = i;
}
}
,在循环外声明变量i
是没有意义的。
因此您可以删除此声明
int vector[MAX], i=0;
^^^^^
和写作例如
for ( int i = 0;i < MAX; i++ ){
cin >> vector[i];
}
考虑到执行此任务的标准算法std::min_element
在标题<algorithm>
中声明。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 使用递归的数组的最小值.这是怎么回事
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 在二维数组中查找最小值和最大值?
- 有没有办法使用递归函数找到数组中最小值的 INDEX?C++
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- C++ 函数,用于查找传入的 N 个数字的平均值、总和、最小值和最大值
- txt 文件中浮点数的最大和最小值
- 余数运算符的等效操作,用于处理低于允许的最小值
- 需要使用模板查找数组的第二个最小和最小值
- CUDA - 将 float3 数组的 (x,y,z) 分量的最小值/最大值分开?
- 查找包含 N 个元素的数组的最小值和最大值
- 错误C++在Visual Studio 2019中使用numeric_limits的长双精度最小值/最大值
- 搜索最小值
- 我如何使用此二叉搜索函数的修改后的最大/最小值创建新数组
- 在 C++ 中,在矩阵中搜索最小值和最大值以及不同行或列的最快方法是什么
- 需要帮助在填充了用户输入的向量中搜索最小值
- 使用模板和unique_ptr实现的二叉搜索树中返回具有最小值的节点
- 在 Martix 中搜索"本地最小值"