el 06-02-2016 05:59 PM
Que tal amigos, estoy trabajando en un ejercicio en el cual tengo una array de 5*3 y necesito sacar el numero que mas se repite en un indicador como puedo hacer esto?? Gracias 🙂
el 06-03-2016 10:12 AM
Hola que tal jaimico360
Por lo que comentas creo que lo mas conveniente es usar dos ciclos ya sea For/While, For/For donde harémos un comportamiento análogo a escaner dentro del arreglo.
Te invito a que entres a éste tópico de la comunidad espero que sea de utilidad para tu aplicación. Nos comparten algunos buenos ejemplos de referencia.
Saludos cordiales, ánimo tu aplicación saldrá
el 06-03-2016 06:07 PM
Hola jaimico360,
la solución a tu pregunta en mi opinión va a ser un poco más complicada de lo que parece si estás trabajando con numeros decimales. El tema es que la representación de estos numeros en la memoria de la PC no es exacta, sino que tiene alguna imprecisión debida a problemas técnicos que si quieres puedes aprender leyendo esta página entre las muchas que hay en la internet sobre el tema.
Mientras que lo que te sugirió Hector puede ir bien trabajando con enteros y boleanos, no puedes usar el mismo método si trabajas con dobles. El tema es que en mi máquina y con el LV 2015 el resultado de (10 / 10 / 3) y (10 / 3 / 10) ¡no son iguales! En tu máquina y/u con una versión diferente del LV el resultado podría ser otro.
Ahora bien, no nos dices de donde salen los números en tu matriz, pero es posibile que sean resultados de pruebas u cálculos semejantes, por lo que pueden ser muy cercanos unos a otros. En esta situación, con una simple comparación puedes dar con que son quince números diferentes aunque parezca que algunos sean repetidos si los representas con pocos decimales. Ahora bien, esto puede darte una sugerencia: si para ti es suficiente representarlos con 2 decimales, puedes simplemente multiplicar por 100 y pasar el arreglo a enteros, haciendo las comparaciones en el arreglo resultante. Esto ya puede darte un buen resultado, y resulta más facil su puedes sortear el arreglo.
Una alternativa si quieres conserval los números en doble precisión es usar la función de Histogram que divide el arreglo en grupos y restituye la cuenta de cuantos caben en cada grupo y el valor central de cada estos. Un tema importante es definir la amplitud de los grupos: en el ejemplo que te pongo divido simplemente en 10 grupos pero tu puedes decidir hacer algo diferente. Aquí tienes al código y un pantallazo de ejemplo: 'more frequent' es el valor central del grupo con mayor cuenta. Ten en cuenta que el valor central puede no coincidir con un número que existe en el arreglo, pero será bastante cercano si eliges bien los grupos.
el 06-04-2016 11:54 AM
jaimico360 escribió:Que tal amigos, estoy trabajando en un ejercicio en el cual tengo una array de 5*3 y necesito sacar el numero que mas se repite en un indicador como puedo hacer esto?? Gracias 🙂
Esto más bien parece un ejercicio teorico (sin mayor aplicación práctica) con el objetivo de aprender el manejo de las herramientas de LabVIEW, por lo que lo más probable es que se trate de números enteros.
Como EttoreNunez, te propongo que pases a un Array de una dimensión, y con todos los elementos (mediante bucles For) y la función Search 1D Array busques las veces que se repite cada elemento (aquí mediante bucles White pues lo tendrás que buscar recursivamente).
Vas anotando el número de veces que se repite (la iteración i del bucle While) y una vez que terminas con todos los elementos eliges el máximo.
Saludos y suerte.
el 06-06-2016 08:16 AM
Gracias a todos por responder, al final he usado for loop y while loop para el conteo y usando un case desde la interaccion.. con posibilidades del 1-10 que son los numeros posibles.. Gracias de todas formas 🙂