Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Kougami en 16 Abril 2017, 13:40 pm



Título: [Eclipse ARM] Recorrer array, encontrar el elemento mayor y devolver su posicion
Publicado por: Kougami en 16 Abril 2017, 13:40 pm
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:

Código
  1. #define N 4
  2. int A[N]={7,3,25,4};
  3. int B[N];
  4. void Recorre();
  5. int Mayor();
  6. void main(){
  7.   Recorre (A, B, N);
  8. }
  9. void Recorre (int A[], int B[], int M){
  10.   for(int j=0; j<M-1; j++){
  11.       B[j] = Mayor(A[j],A[j+1]);
  12.   }
  13. }
  14. int Mayor(int X, int Y){
  15.   if(X>Y)
  16.      return X;
  17.   else
  18.      return Y;
  19. }
  20. int i, max, ind;
  21. int max(int A[], int longA){
  22.   max=0;
  23.   ind=0;
  24.   for(i=0; i<longA; i++){
  25.       if(A[i]>max){
  26.          max=A[i];
  27.          ind=i;
  28.       }
  29.   }
  30.   return(ind);
  31. }


Título: Re: [Eclipse ARM] Recorrer array, encontrar el elemento mayor y devolver su posicion
Publicado por: Serapis en 16 Abril 2017, 22:42 pm
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...
Código:
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