Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

ordenar varios números ascendentemente

Estas en el tema de ordenar varios números ascendentemente en el foro de Visual Basic clásico en Foros del Web. Hola, quiero hacer un script en Visual Basic que me ordene varios números usando el bucle for, pero no se cómo hacerlo. ¿Pueden ayudarme?. Gracias....
  #1 (permalink)  
Antiguo 24/05/2010, 04:11
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 1 mes
Puntos: 0
ordenar varios números ascendentemente

Hola, quiero hacer un script en Visual Basic que me ordene varios números usando el bucle for, pero no se cómo hacerlo. ¿Pueden ayudarme?. Gracias.
  #2 (permalink)  
Antiguo 25/05/2010, 10:44
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: ordenar varios números ascendentemente

Hola!!
Usando el metodo de la burbuja, mira el codigo:

Código vb:
Ver original
  1. Private Sub Command1_Click()
  2.     Dim Numeros(10) As Integer, I As Integer, J As Integer
  3.     Dim Aux As Integer
  4.     Dim strMsg As String
  5.    
  6.     Numeros(0) = 23
  7.     Numeros(1) = 4
  8.     Numeros(2) = 27
  9.     Numeros(3) = 30
  10.     Numeros(4) = 1
  11.     Numeros(5) = 8
  12.     Numeros(6) = 13
  13.     Numeros(7) = 26
  14.     Numeros(8) = 32
  15.     Numeros(9) = 2
  16.  
  17.     For I = 0 To 10
  18.         For J = 0 To 10
  19.             If Numeros(I) < Numeros(J) Then
  20.                 Aux = Numeros(J)
  21.                 Numeros(J) = Numeros(I)
  22.                 Numeros(I) = Aux
  23.             End If
  24.         Next J
  25.     Next I
  26.    
  27.     For I = 0 To 10
  28.         strMsg = strMsg & Numeros(I) & ", "
  29.     Next I
  30.    
  31.     MsgBox strMsg
  32. End Sub

Nos cuentas!!
  #3 (permalink)  
Antiguo 26/05/2010, 04:58
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: ordenar varios números ascendentemente

Hola, una duda: Si cuando declaro las variables no pongo el tipo de dato, por ejemplo, dim = j As integer y sólo pongo dim = j ¿funcionaría igual?. Otra pregunta ¿qué hace la variable StrMsg?
Estas dudas no las puedo probar porque no tengo windows, por eso recurro a vuestro foro. Sois de gran ayuda. Gracias.
  #4 (permalink)  
Antiguo 26/05/2010, 05:06
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: ordenar varios números ascendentemente

Esta forma ¿sería válida?,¿funcionaría correctamente?, el ejercicio me pide introducir los tres números por teclado:

Código vb:
Ver original
  1. a = InputBox("Introduce Numero 1:")
  2. b = InputBox("Introduce Numero 2:")
  3. c = InputBox("Introduce Numero 3:")
  4.  
  5. Option Explicit
  6. Dim a, b, c
  7. var = InputBox("Introduce tre números:")
  8. MsgBox(a, b, c)
  9. If (( a > b) && (a > c)) Then
  10.     If (b > c)
  11.      MsgBox(c, b, a)
  12.     Else
  13.          MsgBox(b, c, a)
  14. End If
  15. If (( b > a) && (b > c)) Then
  16.       If (a > c)
  17.          MsgBox(c, a, b)
  18.       Else
  19.            MsgBox(a, c, b)
  20. End If
  21. If (( c > a) && ( c > b)) Then
  22.      If ( a > b)
  23.         MsgBox(b, a, c)
  24.      Else
  25.           MsgBox(a, b, c)
  26. End If
  #5 (permalink)  
Antiguo 26/05/2010, 05:09
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: ordenar varios números ascendentemente

Las tres variables de arriba irían en la linea 7 es que me he equivocado al copiar y pegar, perdonad.
  #6 (permalink)  
Antiguo 26/05/2010, 05:15
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: ordenar varios números ascendentemente

Muestro el script que he hecho haber si es válido, ignorad lo último que he publicado fijaros, por favor, en este último código haber si es correcto:

Código vb:
Ver original
  1. Option Explicit
  2. Dim a, b, c
  3.  
  4. a = InputBox("Introduce Numero 1:")
  5. b = InputBox("Introduce Numero 2:")
  6. c = InputBox("Introduce Numero 3:")
  7.  
  8. If (( a > b) && (a > c)) Then
  9.     If (b > c)
  10.      MsgBox(c, b, a)
  11.     Else
  12.          MsgBox(b, c, a)
  13. End If
  14. If (( b > a) && (b > c)) Then
  15.       If (a > c)
  16.          MsgBox(c, a, b)
  17.       Else
  18.            MsgBox(a, c, b)
  19. End If
  20. If (( c > a) && ( c > b)) Then
  21.      If ( a > b)
  22.         MsgBox(b, a, c)
  23.      Else
  24.           MsgBox(a, b, c)
  25. End If
  #7 (permalink)  
Antiguo 26/05/2010, 10:26
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: ordenar varios números ascendentemente

Hola!
En tu codigo tienes varios errores, creo que estas usando sintaxis de lenguaje C:
Código vb:
Ver original
  1. dim = j As integer 'la declaracion es incorrecta, el = no va
  2. If (( a > b) && (a > c)) Then 'los && dan error
  3. MsgBox(c, b, a) 'si usas los (..) debes asignar el msgbox

La variable "StrMsg" almacena los numeros organizados y los muestra en un msgbox.

Este es el mismo codigo que te puse pero introduciendo 3 numeros:

Código vb:
Ver original
  1. Private Sub Command1_Click()
  2.     Dim Numeros(3) As Integer, I As Integer, J As Integer
  3.     Dim Aux As Integer
  4.     Dim strMsg As String
  5.  
  6.     Numeros(0) = InputBox("Introduce Numero 1:")
  7.     Numeros(1) = InputBox("Introduce Numero 2:")
  8.     Numeros(2) = InputBox("Introduce Numero 3:")
  9.  
  10.     For I = 0 To 2
  11.         For J = 0 To 2
  12.             If Numeros(I) < Numeros(J) Then
  13.                 Aux = Numeros(J)
  14.                 Numeros(J) = Numeros(I)
  15.                 Numeros(I) = Aux
  16.             End If
  17.         Next J
  18.     Next I
  19.    
  20.     For I = 0 To 2
  21.         strMsg = strMsg & Numeros(I) & ", "
  22.     Next I
  23.    
  24.     MsgBox strMsg
  25. End Sub

Si lo que quieres es el mayor de 3 numeros:

Código vb:
Ver original
  1. Private Sub Command3_Click()
  2.     Dim A As Integer, B As Integer, C As Integer
  3.    
  4.     A = InputBox("Introduce Numero 1:")
  5.     B = InputBox("Introduce Numero 2:")
  6.     C = InputBox("Introduce Numero 3:")
  7.     If (A > B) Then
  8.         If (A > C) Then
  9.             MsgBox "El mayor es: " & A
  10.         Else
  11.             If (C > B) Then MsgBox "El mayor es: " & C
  12.         End If
  13.     Else
  14.         If (B > C) Then
  15.             MsgBox "El mayor es: " & B
  16.         Else
  17.             If (C > A) Then MsgBox "El mayor es: " & C
  18.         End If
  19.     End If
  20. End Sub
  #8 (permalink)  
Antiguo 26/05/2010, 11:10
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 8 meses
Puntos: 29
Respuesta: ordenar varios números ascendentemente

Es que está usando vb script, no vb6.

Este sería el script para el ejemplo que has propuesto en primer lugar:

Código vb:
Ver original
  1. Dim Numeros(10), I, J
  2.     Dim Aux
  3.     Dim strMsg
  4.    
  5.     Numeros(0) = 23
  6.     Numeros(1) = 4
  7.     Numeros(2) = 27
  8.     Numeros(3) = 30
  9.     Numeros(4) = 1
  10.     Numeros(5) = 8
  11.     Numeros(6) = 13
  12.     Numeros(7) = 26
  13.     Numeros(8) = 32
  14.     Numeros(9) = 2
  15.  
  16.     For I = 0 To 10
  17.         For J = 0 To 10
  18.             If Numeros(I) < Numeros(J) Then
  19.                 Aux = Numeros(J)
  20.                 Numeros(J) = Numeros(I)
  21.                 Numeros(I) = Aux
  22.             End If
  23.         Next
  24.     Next
  25.    
  26.     For I = 0 To 10
  27.         strMsg = strMsg & Numeros(I) & ", "
  28.     Next
  29.    
  30.     MsgBox strMsg

Se escribe en un fichero de texto, se le dá extensión .vbs y si tienes activados los scripts, con hacer doble click sobre él se ejecuta.

Saludos

PD: Minette1988, dijiste que tenías que usar For y Next. Intenta usar el código de Lokoman.

PD2: Sobre lo del Dim, para scripts creo que no se puede definir el tipo de datos en la declaración, de modo que tú no copies nunca lo de As Integer o As String, etc..., al igual que en los Next no puedes incluir la variable Next I o Next J. Solo debes poner Next.

Tampoco es que tenga mucha idea sobre scripts.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Última edición por pkj; 26/05/2010 a las 11:18

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:42.