elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  calcular numero mayor de 4 valores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: calcular numero mayor de 4 valores  (Leído 13,290 veces)
dmgdani

Desconectado Desconectado

Mensajes: 29



Ver Perfil
calcular numero mayor de 4 valores
« en: 20 Febrero 2012, 21:05 pm »

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.

Código:
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 Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: calcular numero mayor de 4 valores
« Respuesta #1 en: 20 Febrero 2012, 21:30 pm »

Código
  1. Public Function Max_2(ByVal a As Long, ByVal b As Long) As Long
  2.    If (a > b) Then
  3.        Max_2 = a
  4.    Else
  5.        Max_2 = b
  6.    End If
  7. End Function
  8.  
  9. Public Function Max_3(ByVal a As Long, ByVal b As Long, ByVal c As Long) As Long
  10.    Max_3 = Max_2(Max_2(a, b), c)
  11. End Function
  12.  
  13. Public Function Max_4(ByVal a As Long, ByVal b As Long, ByVal c As Long, ByVal d As Long) As Long
  14.    Max_4 = Max_2(Max_3(a, b, c), d)
  15. 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:
Código
  1. Public Function Max_n(ParamArray n() As Variant) As Long
  2.    Dim i   As Long
  3.    Dim r   As Long
  4.    Dim m   As Long
  5.  
  6.    r = (UBound(n) + 1) Mod 3
  7.  
  8.    For i = 0 To (UBound(n) - r) Step 3
  9.        m = Max_4(m, n(i), n(i + 1), n(i + 2))
  10.    Next i
  11.  
  12.    Select Case r
  13.        Case 1
  14.            m = Max_2(m, n(i))
  15.        Case 2
  16.            m = Max_3(m, n(i), n(i + 1))
  17.    End Select
  18.  
  19.    Max_n = m
  20. End Function
Código
  1. 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 Desconectado

Mensajes: 29



Ver Perfil
Re: calcular numero mayor de 4 valores
« Respuesta #2 en: 20 Febrero 2012, 21:49 pm »

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 Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: calcular numero mayor de 4 valores
« Respuesta #3 en: 24 Febrero 2012, 14:17 pm »

HOLA!!!

Te dejo una alternativa y una funcionque saca el mayor de un array de x items:

Código
  1. Private Function max4(a As Long, b As Long, c As Long, d As Long) As Long
  2. Dim m1 As Long: Dim m2 As Long
  3.    If a > b Then m1 = a Else m1 = b
  4.    If c > d Then m2 = c Else m2 = d
  5.    If m1 > m2 Then max4 = m1 Else max4 = m2
  6. End Function
  7.  
  8. Private Function MaxInArr(a() As Long) As Long
  9.    For x = LBound(a) To UBound(a)
  10.        If a(x) > MaxInArr Then MaxInArr = a(x)
  11.    Next
  12. End Function
  13.  

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 Desconectado

Mensajes: 1.674



Ver Perfil
Re: calcular numero mayor de 4 valores
« Respuesta #4 en: 24 Febrero 2012, 14:57 pm »

Alternativa 3, aprovechando la función de @79137913  ;-):

Código
  1. Private Function MaxInArr(a() As Long) As Long
  2.  
  3. Dim max As Long
  4.  
  5.    max=a(0)
  6.  
  7.    For x = 1 To UBound(a)
  8.        If a(x) >max Then Max = a(x)
  9.   Next
  10.  
  11.  MaxInarr=max
  12.  
  13. End Function
  14.  



Saludos.
« Última modificación: 24 Febrero 2012, 15:00 pm por Bulld0z3r » En línea

- Nice to see you again -
79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: calcular numero mayor de 4 valores
« Respuesta #5 en: 24 Febrero 2012, 18:04 pm »

HOLA!!!

Alternativa 3, aprovechando la función de @79137913  ;-):

Código
  1. Private Function MaxInArr(a() As Long) As Long
  2.  
  3. Dim max As Long
  4.  
  5.    max=a(0)
  6.  
  7.    For x = 1 To UBound(a)
  8.        If a(x) >max Then Max = a(x)
  9.   Next
  10.  
  11.  MaxInarr=max
  12.  
  13. End Function
  14.  



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 Desconectado

Mensajes: 29



Ver Perfil
Re: calcular numero mayor de 4 valores
« Respuesta #6 en: 25 Febrero 2012, 01:40 am »

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 Desconectado

Mensajes: 1.674



Ver Perfil
Re: calcular numero mayor de 4 valores
« Respuesta #7 en: 25 Febrero 2012, 01:53 am »

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 -
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ordenar número de mayor a menor « 1 2 »
Programación Visual Basic
Nessito 14 16,243 Último mensaje 19 Mayo 2007, 20:09 pm
por Nessito
Calcular numero de días entre dos fechas!
Java
*-.Sub-Vorbio.-* 9 39,549 Último mensaje 26 Marzo 2009, 23:34 pm
por Choclito
Calcular el factorial de un numero [Batch]
Scripting
leogtz 0 13,832 Último mensaje 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,712 Último mensaje 21 Noviembre 2013, 19:39 pm
por DarK_FirefoX
calcular distancia de un numero a otro
Programación C/C++
daniloops 2 3,921 Último mensaje 6 Julio 2014, 08:50 am
por MCKSys Argentina
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines