TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: umalrovi en 04 de Diciembre de 2007, 12:10:52

Título: Sacar el valor máximo de un array
Publicado por: umalrovi en 04 de Diciembre de 2007, 12:10:52
Buenas,

Estoy con un pic16f877, tengo un array de 100 posiciones de int16 que los cojo del CAD del PIC y me gustaría sacar el valor máximo. Si alguno de vosotros sab si hay alguna librería que lo hace perfecto, sino pues tengo pensado ir  recorriendo el vector comparandolo con el valor de cada posición y si es mayor lo guardo en una variable hasta obtener el valor máximo. No creo que eso sea la forma más óptima, pero si nadie me comenta nada lo haré así

Saludos!!!
Título: Re: Sacar el valor máximo de un array
Publicado por: fa61an en 04 de Diciembre de 2007, 13:10:26
Código: [Seleccionar]
int i=0;
int max=0;
int index=0;
int Array[100];

for(i=0;i<100;i++){
     if(Array[i]>max){
                  max=Array[i];
                  index=i;
      }
}
Título: Re: Sacar el valor máximo de un array
Publicado por: jfh900 en 04 de Diciembre de 2007, 13:37:06
No creo que eso sea la forma más óptima,

¿Por qué no es la forma más optima?, de echo es la única forma para saber cual es el valor máximo o mínimo de un array. Otra cosa es la forma de acceder al array que se puede realizar en ASM para optimizarlo y que sea más rápido.

Un saludo
Título: Re: Sacar el valor máximo de un array
Publicado por: djpalas en 04 de Diciembre de 2007, 18:39:30
Yo suelo aplicar este.

http://en.wikipedia.org/wiki/Quicksort

saludos
Título: Re: Sacar el valor máximo de un array
Publicado por: fa61an en 04 de Diciembre de 2007, 18:46:18
Yo suelo aplicar este.

http://en.wikipedia.org/wiki/Quicksort

saludos

umalrovi solo necesita el valor maximo mas no ordenar el vector !!
Título: Re: Sacar el valor máximo de un array
Publicado por: djpalas en 05 de Diciembre de 2007, 04:49:15
umalrovi solo necesita el valor maximo mas no ordenar el vector !!

También es verdad, llevas la razón  fa61an  :D :D

Estoy tan saturado por el trabajo que ayer no me di ni cuenta.  :?

Saludos
Título: Re: Sacar el valor máximo de un array
Publicado por: Azicuetano en 05 de Diciembre de 2007, 05:18:48
Jeje, a mi me pasó lo mismo que a djpalas. Me puse a escribir como un loco que si el método de la burbuja... que si el método quicksort... y cuando me dió por releer la pregunta que planteaba umalrovi lo borré todo  :D


Un saludo desde Alicante.
Título: Re: Sacar el valor máximo de un array
Publicado por: umalrovi en 05 de Diciembre de 2007, 05:57:48
Muchas gracias a todos, ok tomo nota de todo. Voy a probar lo que me ha dicho fa61an.

Ahora os pongo que resultados da.

Bendiciones!!
Título: Re: Sacar el valor máximo de un array
Publicado por: umalrovi en 05 de Diciembre de 2007, 06:45:40
Ya he probado la rutina de fa61a y va muy bien, era lo que yo iba hacer desde un primer momento, pero pensaba que agregando alguna librería tal como match.h pues ya te lo hacía, pero da igual ya está hecho.

Muchas gracias a todos!!!
Título: Re: Sacar el valor máximo de un array
Publicado por: Mario87 en 08 de Diciembre de 2007, 09:38:18
Una pequeña observación.
Si todos los números del array fueran negativos el algoritmo no funcionaría no?
Título: Re: Sacar el valor máximo de un array
Publicado por: jfh900 en 08 de Diciembre de 2007, 10:26:18
Si funcionaria ya que matemáticamente el número menos negativo es el mayor.

Un saludo.
Título: Re: Sacar el valor máximo de un array
Publicado por: Mario87 en 08 de Diciembre de 2007, 16:35:34
Sí, pero no quería decir eso.
Me refiero a que en el código expuesto por fa61an, inicializa max con 0, asique, siendo todo el array números menores que max, el resultado del bucle sería index=0 y max=0  :)
un saludito, solo era una pequeña observación ya que yo tambien estoy aprendiendo y me gusta fijarme en estas cosas
Creo que lo ideal sería inicializar max=array[0] y index=0, asi al menos siempre comparas con un elemento del array.
Título: Re: Sacar el valor máximo de un array
Publicado por: BrunoF en 09 de Diciembre de 2007, 00:14:38
No creo que eso sea la forma más óptima,

¿Por qué no es la forma más optima?, de echo es la única forma para saber cual es el valor máximo o mínimo de un array. Otra cosa es la forma de acceder al array que se puede realizar en ASM para optimizarlo y que sea más rápido.

Un saludo

es la única forma para saber cual es el valor máximo o mínimo de un array NO ORDENADO.
Título: Re: Sacar el valor máximo de un array
Publicado por: Nocturno en 09 de Diciembre de 2007, 04:23:28
Sí, pero no quería decir eso.
Me refiero a que en el código expuesto por fa61an, inicializa max con 0, asique, siendo todo el array números menores que max, el resultado del bucle sería index=0 y max=0  :)
un saludito, solo era una pequeña observación ya que yo tambien estoy aprendiendo y me gusta fijarme en estas cosas
Creo que lo ideal sería inicializar max=array[0] y index=0, asi al menos siempre comparas con un elemento del array.
Bien visto
Título: Re: Sacar el valor máximo de un array
Publicado por: jfh900 en 09 de Diciembre de 2007, 08:11:01
Sí, pero no quería decir eso.
Me refiero a que en el código expuesto por fa61an, inicializa max con 0, asique, siendo todo el array números menores que max, el resultado del bucle sería index=0 y max=0  :)
un saludito, solo era una pequeña observación ya que yo tambien estoy aprendiendo y me gusta fijarme en estas cosas
Creo que lo ideal sería inicializar max=array[0] y index=0, asi al menos siempre comparas con un elemento del array.

Tienes toda la razón, no está inicializado correctamente el array.

Un saludo