Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Tengu en 18 Mayo 2009, 21:56 pm



Título: duda con calculos en vb y porcentaje
Publicado por: Tengu en 18 Mayo 2009, 21:56 pm
hola a todos.., tengo una duda de calculo en vb,...

resulta que estoy desarrollando una aplicacion y me faltaria la forma de sacar el porcentaje de parecido de un numero a otro. es decir:


supongamos que tengo un numero "marcador" que puede ser un numero entero desde  cero (incluido) en adelante.
el cual llamaremos "A"

Y como regla repetitiva el programa generaria numeros al azar (tambien 0 o positivos enteros) , y a este valor lo llamaremos "B"


entonces como hariamos para saber en Porcentaje del acercamiento de este numero B  a mi marcador A ????


si alguien tiene un razonamiento logico , funcional que pueda llevarse a vb, se los agradezco.. xk yo ya me enrede jaj. y a veces cuando miras tanto una cosa terminas por no ver absolutamente nada..


Gracias





Título: Re: duda con calculos en vb y porcentaje
Publicado por: Karcrack en 18 Mayo 2009, 22:31 pm
Porcentaje de acercamiento?

Que pretendes obtener teniendo solo dos números?...

Puedes saber cuantas veces A es mas grande que B o viceversa..

Pero no entiendo que es el porcentaje que quieres...

 :-\
Citar
(A/B)*100


Título: Re: duda con calculos en vb y porcentaje
Publicado por: Tengu en 18 Mayo 2009, 22:42 pm
mira, el temas es asi.

A se genera al cargarce la aplicacion(o sea que yo no conozco el valor)

y B se genera despues aleatoriamente

Suponiendo que A= 18

entonces... lo que quisiera saber es si B fuera (19) como podria yo saber si estoy cerca y como podria adaptarlos datos para mostrarlos a modo de porcentaje. por ejemplo si


A=18 y b = 19 => los numeros se parecen en un %v 99.999  ya que A es casi = a B...


Seria algo como calcular la distancia entre dos puntes en la ordenada X y cada vez que B este mas cerca de A entonces estara siendo mas parecido, hasta llegar a ocupar el mismo punto cunado A = B.


Se entiende??
Es que toy complicado para explicarlo...   :P


Título: Re: duda con calculos en vb y porcentaje
Publicado por: Tengu en 18 Mayo 2009, 23:02 pm
Dim a As String
Dim b As String
Dim distanciaayb As String
Private Sub Command1_Click()
If a < b Then
distanciaayb = Val(b) - Val(a)
Else
distanciaayb = Val(a) - Val(b)
End If
MsgBox distanciaayb
End Sub


 de esta manera sale la distancia ente A y B  pero como puedo aumentar el porcentaje proporcianolmente a medida que la distancia disminuye hasta llegar a distancia CERO porcentaje CIEN ???


Título: Re: duda con calculos en vb y porcentaje
Publicado por: BlackZeroX en 18 Mayo 2009, 23:10 pm
NO SE SI LE ATINE O NO PERO AUN ASI TE DIGO LO QUE TE ENTIENDO

supongamos que se genero un numero en "X" y uno "Y"

rectifico cual es el mayor y con base a esto lo mando a una funcion donde el mayor el es 100% y el menor es una parte de ese porcentaje

es decir

A=19
B=50

por decir algo

Código
  1. Private Sub Form_Load()
  2. 'juega con estos valores
  3. a = 50
  4. b = 49
  5. 'Fin valores
  6. If a > b Then
  7. res = Porcentaje(a, b)
  8. ElseIf b > a Then
  9. res = Porcentaje(b, a)
  10. Else
  11. res = 100
  12. End If
  13. MsgBox res
  14. End Sub
  15. Function Porcentaje(ByVal ValMax As Integer, ByVal valMin As Integer) As Long
  16.     Porcentaje = (valMin * 100) / ValMax
  17. End Function
  18.  


Edito-------------------------


Código
  1. Option Explicit
  2. Private Sub Form_Load()
  3. Dim a As Integer
  4. Dim b As Integer
  5. Dim res As String
  6. a = 19
  7. b = 50
  8. res = IIf(a > b, Porcentaje(a, b), IIf(b > a, Porcentaje(b, a), 100))
  9. MsgBox res
  10. End Sub
  11. Function Porcentaje(ByVal ValMax As Integer, ByVal valMin As Integer) As Long
  12.     Porcentaje = (valMin * 100) / ValMax
  13. End Function
  14.  


Título: Re: duda con calculos en vb y porcentaje
Publicado por: Tengu en 18 Mayo 2009, 23:42 pm
sisi, es eso lo que busco, aunk tu code tiene un pekeño fallo

ya que cuando

A= 19
B = 1

daun resultado de "5", siende que la distancia entre A y B = 18, y en iguales condiciones cuando

A=19
B = 37 .............  Distancia tambien es 18

pero arroja un resultado de 51 el cual es diferente y no confitrma la formula.

Pero igualmente me ayudo a razonar y lo solucione de una manera un pco sucia y chapucera pero solucion al fin. Dios bendiga a nuestro amado IF

Código:
Private Sub Form_Load()
a = "18"
b = "6"
End Sub


Private Sub Command1_Click()
If Not a < b Then
distanciaayb = Val(a) - Val(b)
Else
distanciaayb = Val(b) - Val(a)
End If

MsgBox distanciaayb

If distanciaayb < 100 Then

If Not distanciaayb = "0" Then
Porcentaje = Val("100") - Val(distanciaayb)
Else
Porcentaje = "0"
End If

MsgBox "porcentaje   %  " + Porcentaje
Else
MsgBox "la Distancia es muy Grande .,el resultado no es alentador"
End If
 
End Sub


aunk  se puede mejorar pero lalogica ya esta plsmada.


Muchas Gracias.!!!


Título: Re: duda con calculos en vb y porcentaje
Publicado por: BlackZeroX en 18 Mayo 2009, 23:53 pm
no hay fallo en el trozo que plasme en si lo que hice fue tomar en consideración de 0 a X siendo 0 = 0% y X = 100% jamas tome diferencial alguno

graficamente hablando tome como referencia el Numero mayor como 100% y el numero cero como 0% entonces


0------------------18
0------------------------------------------------------------100

= 18% casi igual y de diferencia solo se restaria ese 18% el 100% que seria 82% pero da igual no es lo que pedias...!¡


A=19
B=1

1= 5% de 19 por ende es 5% igual de 19 y 95% diferente

P.D.: creo que deberias tranajar con regla de 3 en lugar de siempre esperar un numero menor a 100,

Si el la diferencia de A y B = 100 dice que es un numero grande?...¡!

Saludos, Dulces Lunas


Título: Re: duda con calculos en vb y porcentaje
Publicado por: Tengu en 19 Mayo 2009, 00:26 am
exacto. es que para mi proyecto una diferencia entre punto y punto que supere los 60 es gigante y ya no sirve , y en una regla de tres


a............................100 %
b............................X %

no funcionaria pues los numeros se generan aleatoriamente y supongamos que


A = 18

si B fuera 75 , seria inaceptable para mi proyecto que fuera un % 416.66  se mejante.

xk por logica si es un % 100 significa que a = B . entonces la regla de tres simple es inaceptable

y ni hablemos Si A = 0 xk hay seria un % 75.000 ja.


Gracias por toda tu coolaboracion Saludos Buenas noches


Título: Re: duda con calculos en vb y porcentaje
Publicado por: ‭‭‭‭jackl007 en 19 Mayo 2009, 04:03 am
El codigo seria asi:
Código
  1. Dim A, B As Integer
  2.  
  3. A = 15 'Nmero al azar
  4. B = 12 'Numero con el que se compara
  5. 'Tienes dos puntos y quieres saber que tanto se parecen los valores de los mismos: A, B; asi que comparamos A con respecto a B
  6.  
  7. MsgBox Str((A * 100) / B) & "%"
  8. 'El resultado es 125%, y tiene logica, pues el numero 15 se aleja de 12, es como aumentar o disminuir un zoom
  9. ' a un documento PDF (salvo que aqui es inverso)
  10. 'Si el numero A fuese menor que B, entonces da el porcentaja de aproximacion o acercamiento (que tanto se parece A a B)
  11.  
  12.  

Por cierto si vas a hacer esto:
Código:
If Not A < B Then
distanciaayb = Val(A) - Val(B)
Else
distanciaayb = Val(B) - Val(A)
End If

Para eso existe la funcion ABS: Valor absoluto
Código
  1. distanciaayb =  Abs(A - B)


Explica un poco más del problema, a lo mejor lo correcto es otra cosa...