Autor
|
Tema: calcular numero mayor de 4 valores (Leído 13,698 veces)
|
dmgdani
Desconectado
Mensajes: 29
|
hola todos Hola estoy simulando el lanzamiento de un dado son 5 veces mediante un ramdim que me facilitaron en un tema anterior. ahora queria calcular cual es el numero mayor de esos 5 numeros. yo e intentado con muchos codigos pero no consigo nada. private sub command1_Click() dim Mayor
if val(text1)>val(text2) then mayor=val(tex1) elseif val(text2)>val(text1) then mayor=val(text2) end if
if mayor<val(text3) then mayor=val(text3)
elseif mayor>val(text3) then 'Nada end if
text4=mayor end sub
no funciona cuando alguno de los resultados son iguales o se repiten numeros. es muy similar lo que quiero hacer al juego parchis cuatro persona y tirar un dado cada una el que mayor numero saque empiezz si empatan vuelven a tirar ellos dos y el que saque mayor numero gana. un saludo gracias
|
|
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Public Function Max_2(ByVal a As Long, ByVal b As Long) As Long If (a > b) Then Max_2 = a Else Max_2 = b End If End Function Public Function Max_3(ByVal a As Long, ByVal b As Long, ByVal c As Long) As Long Max_3 = Max_2(Max_2(a, b), c) End Function Public Function Max_4(ByVal a As Long, ByVal b As Long, ByVal c As Long, ByVal d As Long) As Long Max_4 = Max_2(Max_3(a, b, c), d) End Function
Lo dejo así para que veas clara la lógica del algoritmo.
Añado una función que devuelve el máximo sea cual sea la cantidad de números que recibe: Public Function Max_n(ParamArray n() As Variant) As Long Dim i As Long Dim r As Long Dim m As Long r = (UBound(n) + 1) Mod 3 For i = 0 To (UBound(n) - r) Step 3 m = Max_4(m, n(i), n(i + 1), n(i + 2)) Next i Select Case r Case 1 m = Max_2(m, n(i)) Case 2 m = Max_3(m, n(i), n(i + 1)) End Select Max_n = m End Function
MsgBox Max_n(0, 1, 2, 3, 12, 15, 69, 0, 966)
Saludos
|
|
« Última modificación: 20 Febrero 2012, 21:45 pm por Karcrack »
|
En línea
|
|
|
|
dmgdani
Desconectado
Mensajes: 29
|
muchas gracias Karcrack me sirvio de mucho tu codigo es muy bueno. estoy haciendo pruebas y me sirvio. yo lo intentaba pero los que daban iguales y algunos numeros no lo cojia pero con tu funcion me sirvio de mucho
un saludo
|
|
|
En línea
|
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!! Te dejo una alternativa y una funcionque saca el mayor de un array de x items: Private Function max4(a As Long, b As Long, c As Long, d As Long) As Long Dim m1 As Long: Dim m2 As Long If a > b Then m1 = a Else m1 = b If c > d Then m2 = c Else m2 = d If m1 > m2 Then max4 = m1 Else max4 = m2 End Function Private Function MaxInArr(a() As Long) As Long For x = LBound(a) To UBound(a) If a(x) > MaxInArr Then MaxInArr = a(x) Next End Function
GRACIAS POR LEER!!!
|
|
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
HdM
Desconectado
Mensajes: 1.674
|
Alternativa 3, aprovechando la función de @79137913 : Private Function MaxInArr(a() As Long) As Long Dim max As Long max=a(0) For x = 1 To UBound(a) If a(x) >max Then Max = a(x) Next MaxInarr=max End Function
Saludos.
|
|
« Última modificación: 24 Febrero 2012, 15:00 pm por Bulld0z3r »
|
En línea
|
- Nice to see you again -
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!! Alternativa 3, aprovechando la función de @79137913 : Private Function MaxInArr(a() As Long) As Long Dim max As Long max=a(0) For x = 1 To UBound(a) If a(x) >max Then Max = a(x) Next MaxInarr=max End Function
Saludos. Que le hiciste? · Le quitaste el soporte para arrays irregulares (Lbound) · Usas memoria sin sentido (variable max) GRACIAS POR LEER!!!
|
|
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
dmgdani
Desconectado
Mensajes: 29
|
hola todos muchas gracias yo al final use MsgBox Max_n(0, 1, 2, 3, 12, 15, 69, 0, 966) me sirvio de mucho muchas gracias. ahora tengo una dudilla y esque me estoy liando mucho con algunos codigos haber si me podeis ayudar mi problema es el siguiente.
primero hago 4 personas tiran el dado salen claro 4 valores hasta hay bien. entonces yo tengo que cojer el valor mayor de los 4 valores con la funcion de antes me resuleve ese problema pero si el numero mayor esta repetido tengo que volver a tirar los dados pero solo solo las personas que an tenido el numero mayor. y que esas personas vuelvan a tirar el dado y el que salga mayor de ellos empieza la partida.
un saludo muchas gracias
|
|
|
En línea
|
|
|
|
HdM
Desconectado
Mensajes: 1.674
|
Buenas. Que le hiciste? · Le quitaste el soporte para arrays irregulares (Lbound) · Usas memoria sin sentido (variable max)
Pfff, pues tienes más razón que un santo, no sé en qué estaría pensando, la verdad. Sin duda esto me ayudará a prestar más atención y fijarme más en "mis aportes". @dmgdani, creo que deberías ser un poco más específico a la hora de indicar con qué te estás liando. Aporta código, para ver hasta dónde has avanzado, please. Saludosssss.
|
|
|
En línea
|
- Nice to see you again -
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ordenar número de mayor a menor
« 1 2 »
Programación Visual Basic
|
Nessito
|
14
|
17,022
|
19 Mayo 2007, 20:09 pm
por Nessito
|
|
|
Calcular numero de días entre dos fechas!
Java
|
*-.Sub-Vorbio.-*
|
9
|
40,144
|
26 Marzo 2009, 23:34 pm
por Choclito
|
|
|
Calcular el factorial de un numero [Batch]
Scripting
|
leogtz
|
0
|
14,139
|
10 Abril 2009, 20:11 pm
por leogtz
|
|
|
Ayuda Java: Ingreso de X numero, si es mayor a 10 que se multiplique...
Java
|
runtuntunger
|
3
|
2,945
|
21 Noviembre 2013, 19:39 pm
por DarK_FirefoX
|
|
|
calcular distancia de un numero a otro
Programación C/C++
|
daniloops
|
2
|
4,251
|
6 Julio 2014, 08:50 am
por MCKSys Argentina
|
|