Help MV programadores!!!!

MkS

Bueno, estoy haciendo un trabajito para programacion y me kede estancado..
El trabajo consiste en hacer un programita con Visual-Basic que tu le des 4 numeros, te los ordene de mayor a menor y de menor a mayor, que solo puedeas poner numeros (que no puedas pner letras en los text) y que te deje poner un "-" de lante de cada numero y una sola "," o "." entre el numero.. Podeis ayudarme?

Os paso el codigo del programa..

Dim a As Double
Dim b As Double
Dim c As Double
Dim d As Double
Dim t As Double

Private Sub Text1_Change()


a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
d = Val(Text4.Text)


If a < d Then
    t = a
    a = d
    d = t
End If

If b < d Then
    t = b
    b = d
    d = t
End If

If c < d Then
    t = c
    c = d
    d = t
End If

If a < c Then
    t = a
    a = c
    c = t
End If

If b < c Then
    t = b
    b = c
    c = t
End If

If a < b Then
    t = a
    a = b
    b = t
End If

Label1.Caption = a
Label2.Caption = b
Label3.Caption = c
Label4.Caption = d
Label5.Caption = d
Label6.Caption = c
Label7.Caption = b
Label8.Caption = a

End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 8 Then Exit Sub
If KeyAscii < 44 Or KeyAscii > 57 Then
KeyAscii = 0
End If

End Sub

Private Sub Text2_Change()

a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
d = Val(Text4.Text)


If a < d Then
    t = a
    a = d
    d = t
End If

If b < d Then
    t = b
    b = d
    d = t
End If

If c < d Then
    t = c
    c = d
    d = t
End If

If a < c Then
    t = a
    a = c
    c = t
End If

If b < c Then
    t = b
    b = c
    c = t
End If

If a < b Then
    t = a
    a = b
    b = t
End If

Label1.Caption = a
Label2.Caption = b
Label3.Caption = c
Label4.Caption = d
Label5.Caption = d
Label6.Caption = c
Label7.Caption = b
Label8.Caption = a

End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)

If KeyAscii = 8 Then Exit Sub
If KeyAscii < 44 Or KeyAscii > 57 Then
KeyAscii = 0
End If

End Sub

Private Sub Text3_Change()

a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
d = Val(Text4.Text)


If a < d Then
    t = a
    a = d
    d = t
End If

If b < d Then
    t = b
    b = d
    d = t
End If

If c < d Then
    t = c
    c = d
    d = t
End If

If a < c Then
    t = a
    a = c
    c = t
End If

If b < c Then
    t = b
    b = c
    c = t
End If

If a < b Then
    t = a
    a = b
    b = t
End If

Label1.Caption = a
Label2.Caption = b
Label3.Caption = c
Label4.Caption = d
Label5.Caption = d
Label6.Caption = c
Label7.Caption = b
Label8.Caption = a

End Sub

Private Sub Text3_KeyPress(KeyAscii As Integer)

If KeyAscii = 8 Then Exit Sub
If KeyAscii < 44 Or KeyAscii > 57 Then
KeyAscii = 0
End If

End Sub

Private Sub Text4_Change()

a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
d = Val(Text4.Text)


If a < d Then
    t = a
    a = d
    d = t
End If

If b < d Then
    t = b
    b = d
    d = t
End If

If c < d Then
    t = c
    c = d
    d = t
End If

If a < c Then
    t = a
    a = c
    c = t
End If

If b < c Then
    t = b
    b = c
    c = t
End If

If a < b Then
    t = a
    a = b
    b = t
End If

Label1.Caption = a
Label2.Caption = b
Label3.Caption = c
Label4.Caption = d
Label5.Caption = d
Label6.Caption = c
Label7.Caption = b
Label8.Caption = a

End Sub

Private Sub Text4_KeyPress(KeyAscii As Integer)

If KeyAscii = 8 Then Exit Sub
If KeyAscii < 44 Or KeyAscii > 57 Then
KeyAscii = 0
End If

End Sub

En este codigo me deja poner el "-" donde me salga de los co**** y cuantas "," y "." quiera, y necesito restrigirlo a: un "-" delante del numero y una sola "," o "."

Gracias por adelantado

Z3R0KULL

dos cosas que te van a servir muchisimo

Array y metodo de la burbuja

Por cierto, para comprobar si es numero, en vb está la funcion isnumeric

MkS

#2 hace poco que empezamos, no vimos eso de array (bueno si, un poco en C++) y lo del metodo de la burbuja 0 patatero... De lo otro no se lo que es. sabrias como hacerlo con el codigo que yo di?

heeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeelp!!

gracias

Z3R0KULL

seria algo asi.....te lo voy ha hacer aqui directamente asi que no lo probaré pero seria mas o menos, en consola y te lo hago sin funciones

dim numero(3) as integer
dim i, aux as integer

for i = 0 to ubound(numero)
console.writeline("Introduce numero")
numero(i) = console.readline
if not isnumeric numero(i) then
console.writeline ("no has introducido un numero correcto")
i -=1
end if
next

for i = o to ubound (numero -1 )
if numero(i)>numero(i+1) then
aux = numero(i)
numero(i) = numero (i+1)
numero(i+1) = aux
end if
next

for i=0 to ubound (numero)
console.write ("{0} ",numero(i))
next
console.writeline()
array.reverse(numero)
for i=0 to ubound (numero)
console.write ("{0} ",numero(i))
next
console.readline

MkS

me entero 0... pero bueno gracias de todas formas!

Si alguien mas puede aportar algo...

m0rG

El método de la burbuja es un algoritmo de ordenación (no eficiente).Es simplemente coger el primer elemento y compararlo con todos los demás de forma que cuando encuentres uno menor(si ordenas de menor a mayor),los intercambias.Un ejemplo:

Tabla desordenada:

3 2 1 4

Coges el primer elemento (el 3) y lo comparas con el 2,como es mayor los intercambias:

2 3 1 4

Ahora avanzas y comparas el de la primera posición(el 2 ahora) con el siguiente que es el 1,como es menor los intercambias:

1 3 2 4

Una vez que hayas comparado con todos pasas a la siguiente posicion(en este caso la 2 y comparas con 3 y 4).Cuando llegues a la posición 4 ya estará la tabla ordenada.

Es un método poco eficiente pero por lo menos más claro que hacer tropecientas comparaciones.De todas maneras lo mejor sería hacerlo con arrays/tablas que dices que no habéis dado.

Usuarios habituales

  • m0rG
  • MkS
  • Z3R0KULL