• Viernes 8 de Noviembre de 2024, 10:13

Autor Tema:  Errores resolviendo equaciones de segundo grado  (Leído 1530 veces)

Gromenauer

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Errores resolviendo equaciones de segundo grado
« en: Jueves 17 de Diciembre de 2009, 22:05 »
0
Buenas , me acabo de registrar tras ver muchos post , veo muchos conocimientos aquí. El tema esta en que tengo que entregar un proyecto de final de año , y pese a que he estado investigando por mi cuenta ( tener en cuenta que el trabajo es de un nivel superior al curso cursado actualmente) no logro dejar perfecto el programa que he diseñado.  Voy a dejar el codigo para expresar mejor mis confusiones . Repito que no soy nisiquiera estudiante de programación , todo esto ha sido creado a base de investigar.Disculpad tambien pues las explicaciones estan en catalan.. pero la normativa es muy estricta.. yo soy castellano de pura cepa. xD

Código: Visual Basic
  1. Option Explicit
  2.  
  3. Private Sub cmdIgual_Click()
  4. 'Primera part del codi , on es substitueixen els valors donats als termes que acompanyen
  5. 'l'incognita x amb els seus respectius graus
  6. 'Substitució i execució dels canvis de signe i potencies.
  7.                
  8.                                        'Substitució de dades
  9. txtB1 = -Val(txtB.Text)                'Canvi de signe
  10. txtb2 = Val(txtB.Text) ^ 2             'Potencia
  11. txtA1 = Val(txtA.Text)                 'Substitució de dades
  12. txtC1 = Val(txtC.Text)
  13. txt4 = -4                              'Substitució de dades
  14. txt2 = 2
  15. txtA2 = Val(txtA.Text)
  16. If txtA.Text <= 0 Then                 'Posible falla
  17. 'En cas que el valor donat al terme que acompanya l'incognita x^2 fos cero
  18. 'la operació no procediria i ens retorna l'acció.
  19. End If
  20.  
  21.  
  22. End Sub   'Finalitza la substitució
  23. 'ATENCIÓ
  24. 'visual basic no reconeix la Coma " , " com a signe de separació entre el nombre
  25. 'unitari i el nombre decimal. Nomes reconeix com a tal , el punt "."
  26. 'en fer les operacions , visual retorna els decimals com a "," , pero per seguir
  27. 'operant necesitarem tornar a col·locar el punt per poder seguir operant amb el valor
  28. 'que ens ha tornat l'operació. Per portar a terme aquet procediment farem un canvi
  29. 'automatic cada vegada que fem una part dels procesos on el programa buscara la coma
  30. 'i la substituira per un punt automaticament.
  31.  
  32. Private Sub txtB1_Change()                    'Canvi de Coma a Punt
  33. txtB1 = Replace(txtB1, ",", ".")
  34. End Sub
  35. Private Sub txtB2_Change()                    'Canvi de Coma a Punt
  36. txtb2 = Replace(txtb2, ",", ".")
  37. End Sub
  38.  
  39. Private Sub txta1_Change()                    'Canvi de Coma a Punt
  40. txtA1 = Replace(txtA1, ",", ".")
  41. End Sub
  42. Private Sub txtc1_Change()                    'Canvi de Coma a Punt
  43. txtC1 = Replace(txtC1, ",", ".")
  44. End Sub
  45. Private Sub txtA2_Change()                    'Canvi de Coma a Punt
  46. txtA2 = Replace(txtA2, ",", ".")
  47. End Sub
  48.                                             'Els nombres fixos no caldrá rectificar-los.
  49.  
  50. Private Sub Command2_Click()
  51. 'Segona part del codi , on es fan les operacions per tal que quedin simplificats els resultats
  52. 'de les operacions indicades a la segona part de la formula.
  53.  
  54. txtB3 = txtB1.Text                                                  'Substitució de dades
  55. txtRaiz = Val(txtb2.Text) - (4 * Val(txtA1.Text) * Val(txtC1.Text))   'Operació dins l'arrel
  56. txtA3 = 2 * Val(txtA2.Text)                                         'Terme A per Dos
  57. End Sub
  58.              'Finaliztza la primera part de l'operació.
  59.             'Tornem a Canviar de coma a punt.
  60.  
  61. Private Sub txtB3_Change()                    'Canvi de Coma a Punt
  62. txtB3 = Replace(txtB3, ",", ".")
  63. End Sub
  64. Private Sub txtraiz_Change()                    'Canvi de Coma a Punt
  65. txtRaiz = Replace(txtRaiz, ",", ".")
  66. End Sub
  67. Private Sub txtA3_Change()                    'Canvi de Coma a Punt
  68. txtA3 = Replace(txtA3, ",", ".")
  69. End Sub
  70.  
  71.  
  72.  
  73. Private Sub Command1_Click()
  74. 'Tercera part del codi , on es fan les operacions finals per mostrar el resultat
  75. 'que queda dins l'arrel ja feta. Un altre problema trobat a l'hora de fer el programa
  76. 'es fer l'arrel cuadrada. 'Al final es va optar per elevar a una potencia (1/2) on 2 es
  77. 'l'index de l'arrel.
  78.  
  79.  
  80.  
  81. If Val(txtRaiz.Text) < 0 Then  'Posible falla
  82.                               'Si l'arrel dona negativa no es pot continuar resolent
  83.                               'per tant queda marcat que si l'operació ens torna el nombre
  84.                               'negatiu es donara misatge d'error.
  85. txtraiz1 = "No Válid"
  86. Else: txtraiz1 = Sqr(txtRaiz.Text)    'Arrel quadrada
  87. txtb4 = txtB3.Text
  88. txtA4 = txtA3.Text
  89. End If
  90. End Sub
  91.  
  92.  
  93.  
  94. 'Solventació del problema de la coma.
  95. Private Sub txtraiz1_change()
  96. txtraiz1 = Format(txtraiz1.Text, "#######.00")
  97. 'Limitar decimals
  98. End Sub
  99.  
  100.  
  101.  
  102. Private Sub txtB4_Change()                       'Canvi de Coma a Punt
  103. txtb4 = Replace(txtb4, ",", ".")
  104. End Sub
  105. Private Sub txtA4_Change()                       'Canvi de Coma a Punt
  106. txtA4 = Replace(txtA4, ",", ".")
  107. End Sub
  108.  
  109. 'Part final on ens mostrara els dos posibles resultats obtinguts del valor de l'incognita x.
  110. Private Sub Command3_Click()
  111.  
  112. txtXpos = (Val(txtb4.Text) + Val(txtraiz1.Text)) / Val(txtA4.Text)  ' -b + (..)
  113.  
  114. txtXneg = (Val(txtb4.Text) - Val(txtraiz1.Text)) / Val(txtA4.Text)  ' -b - (..)
  115.  
  116. txtXneg.Text = Format(txtXneg.Text, "#######.00")
  117.  
  118. End Sub
  119. 'Solventació del problema de la coma.
  120.  
  121.  

Bien una vez visto el codigo , espero que se pueda entender , el problema recae en lo siguiente: Se introducen valores A B C y se resuelve la equacion de segundo grado de una forma ordenada. Una vez hecha cada operacion he tenido que poner lo de que la coma sea cambiada por el punto , ya que sino no me es posible operar con esos digitos en el siguiente paso. El problema es que al llegar al final , no se como hacer para poder redondear el resultado de la raiz cuadrada a 2 decimales , ya que si no redondeo , el resultado de la x me da #,############E-##
Siendo # numeros . Entienden? Vamos que me da un valor incorrecto multiplicado por una especie de letra E , que supongo tendra algun valor concreto. Que puedo hacer?
Mi intento fue solucionar de redondeando decimales , pero si redondeo no puedo cambiar la coma por el punto , y por lo tanto el valor del texto no puede ser usado para el paso final. :S Quiero decir : si la raiz me da 23.55 , y redondeo me queda 23,55 y no puedo cambiar la coma por el punto , asique no puedo usar ese termino para operar finalmente. :S

Alguna sugerencia?

Mil perdones por la parrafada , espero que se entienda todo.
Saludos

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Errores resolviendo equaciones de segundo grado
« Respuesta #1 en: Sábado 23 de Enero de 2010, 12:55 »
0
Citar
23.55 , y redondeo me queda 23,55 y no puedo cambiar la coma por el punto
Qué teimpide cambiar la coma por un punto o por una arroba o por lo que necesites... ?

Código: Visual Basic
  1.  
  2. dim CambiarEsto as string, PorEsto as string
  3. CambiarEsto = ","
  4. Poresto = "."
  5. text1.text = replace(text1.text, CambiarEsto, porEsto)
  6.  
  7.  
«Ma non troppo»
----> ModoVacaciones = False<----