如果需要的话,部分代码用于查找数组上的Greatest和Lowest数字。我现在需要索引。这些数字在该数组中的位置。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
#define DIM 5
void lerArray (int x[DIM]);
int maximo(int x[DIM]);
int minimo(int x[DIM]);
int main(){
int a[DIM],l,g;
lerArray(a);
g = maximo(a);
l = minimo(a);
printf("Minimo:%d t Maximo:%d ",g,l);
return 0;
}
void lerArray (int x[DIM]){
int i,numb;
for(i=0;i<DIM;i++)
{
printf("Intoduza o %dº elementon",i);
scanf("%d",&numb);
x[i]= numb;
}
}
int maximo(int x[DIM]){
int i,max;
max =x[0];
for(i=0;i<DIM;i++){
if (max>x[i])
max = x[i];
}
return max;
}
int minimo(int x[DIM]){
int i,min;
min =x[0];
for(i=0;i<DIM;i++){
if(min<x[i])
min=x[i];
}
return min;
}
如果您需要最大值的数组索引,请返回该索引而不是最大值。然后,如果需要,调用函数可以通过使用索引轻松打印值本身。顺便说一句,你的比较方式不对。
int maximo(int x[DIM]){
int i, max, maxind;
max =x[0];
maxind = 0; // added this
for(i=0;i<DIM;i++) {
if (max < x[i]) { // reversed the conditional test
max = x[i];
maxind = i; // remember this too
}
}
return maxind; // return the index instead of the value
}
为了检索数组中最大值/最小值的值和索引,您需要保存最后一个索引i
,您在函数中更改了该索引的最大值/最低值。
在C中,不能在一个函数中返回多个值。
实现这一点有多种方法。
一种解决方案是为函数提供一个指向整数的指针作为附加参数,在其中存储值的索引。
另一种解决方案是创建一个大小为2的简单数组来存储结果(最小/最大值)和相关索引,并将其用作maximo
和minimo
函数调用的参数。
或者,您甚至可以创建一个包含结果及其索引的结构。