[Eclipse ARM] Recorrer array, encontrar el elemento mayor y devolver su posicion

Iniciado por Kougami, 16 Abril 2017, 13:40 PM

0 Miembros y 1 Visitante están viendo este tema.

Kougami

Buenas, tengo problemas porque no se como implementar bien con subrutinas un programa que tengo en C que recorre un array A de longitud N, busca el elemento mayor y devuelve su posicion, pero cada cosa, es decir, el recorrer, encontrar el mayor elemento y devolver su posicion son subrutinas.
El codigo en C es el siguiente:

#define N 4
int A[N]={7,3,25,4};
int B[N];
void Recorre();
int Mayor();
void main(){
   Recorre (A, B, N);
}
void Recorre (int A[], int B[], int M){
   for(int j=0; j<M-1; j++){
       B[j] = Mayor(A[j],A[j+1]);
   }
}
int Mayor(int X, int Y){
   if(X>Y)
      return X;
   else
      return Y;
}
int i, max, ind;
int max(int A[], int longA){
   max=0;
   ind=0;
   for(i=0; i<longA; i++){
       if(A[i]>max){
          max=A[i];
          ind=i;
       }
   }
   return(ind);
}

Serapis

Hay algo llamado cerebro, donde utilizando algo llamado "sentido común", uno puede resolver "Problemas" y "enigmas misteriosos".... en vez de copiar código, que luego uno no entiende, es mejor pensar un mínimo.... incluso tomar 5-10 trozos de papel de diferente tamaño, alinearlos y buscar el mayor uno a uno comparando cada uno con el previo... si es mayor, lo deslizas un poco abajo de la línea... cuando terminas de recorrer la línea el que tienes abajo es el papel más grande, y el índice es la posición que ocupa. HAZLO físicamente, entiende el asunto.... programar es simplemente aplicar conocimientos (en un lenguaje específico) y la mayoría de conocimientos son asequibles a todo el mundo, sin nada más...


En psedocodigo, limpio de polvo y paja...
Array de enteros: Array
Tamaño Array: Size
Entero: Mayor
Entero: Indice


Funcion BuscarElMayor(Array, Size, Mayor, Indice)
    Indice=0
    Mayor = Array(0)
   
    bucle para k desde 1 hasta size-1
        si (Array(k) > Mayor) luego
               Mayor= Array(k)
               Indice = k
        fin si
    fin bucle
fin funcion