comprobar esto, tal vez le da una idea de lo que adaptarlo a sus necesidades:
#define TOP 2147483647
#define true 1
#define false 0
/* finds the minimum (absolute value) of vector vec */
void Vector_Min_Not_0(vector *vec, int *min, int *index)
{
int m, size, i, ind, aux;
size = vec->size;
m = TOP;
ind = -1;
for (i = 0; i < size; i++)
if (vec->p[i] != 0)
if (m > (aux = abs(vec->p[i]))) {
ind = i;
m = aux;
}
if (ind == -1)
*min = 1;
else
*min = m;
*index = ind;
}
que lo llamarían, tiene una estructura:
typedef struct vector {
int size;
int *p;
} vector;
vector vec_A;
int min, index, *p;
Vector_Min_Not_0(&vec_A, &min, &index);
¿Qué lenguaje de programación? Si no importa, use el código de golf. –