Programación General > Visual Basic para principiantes

 Errores resolviendo equaciones de segundo grado

(1/1)

Gromenauer:
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 ---Option Explicit Private Sub cmdIgual_Click()'Primera part del codi , on es substitueixen els valors donats als termes que acompanyen'l'incognita x amb els seus respectius graus'Substitució i execució dels canvis de signe i potencies.                                                        'Substitució de dadestxtB1 = -Val(txtB.Text)                'Canvi de signetxtb2 = Val(txtB.Text) ^ 2             'PotenciatxtA1 = Val(txtA.Text)                 'Substitució de dadestxtC1 = Val(txtC.Text)txt4 = -4                              'Substitució de dadestxt2 = 2txtA2 = Val(txtA.Text)If txtA.Text <= 0 Then                 'Posible falla'En cas que el valor donat al terme que acompanya l'incognita x^2 fos cero'la operació no procediria i ens retorna l'acció. End If  End Sub   'Finalitza la substitució'ATENCIÓ'visual basic no reconeix la Coma " , " com a signe de separació entre el nombre'unitari i el nombre decimal. Nomes reconeix com a tal , el punt "."'en fer les operacions , visual retorna els decimals com a "," , pero per seguir'operant necesitarem tornar a col·locar el punt per poder seguir operant amb el valor'que ens ha tornat l'operació. Per portar a terme aquet procediment farem un canvi'automatic cada vegada que fem una part dels procesos on el programa buscara la coma'i la substituira per un punt automaticament. Private Sub txtB1_Change()                    'Canvi de Coma a PunttxtB1 = Replace(txtB1, ",", ".")End SubPrivate Sub txtB2_Change()                    'Canvi de Coma a Punttxtb2 = Replace(txtb2, ",", ".")End Sub Private Sub txta1_Change()                    'Canvi de Coma a PunttxtA1 = Replace(txtA1, ",", ".")End SubPrivate Sub txtc1_Change()                    'Canvi de Coma a PunttxtC1 = Replace(txtC1, ",", ".")End SubPrivate Sub txtA2_Change()                    'Canvi de Coma a PunttxtA2 = Replace(txtA2, ",", ".")End Sub                                            'Els nombres fixos no caldrá rectificar-los. Private Sub Command2_Click()'Segona part del codi , on es fan les operacions per tal que quedin simplificats els resultats'de les operacions indicades a la segona part de la formula. txtB3 = txtB1.Text                                                  'Substitució de dadestxtRaiz = Val(txtb2.Text) - (4 * Val(txtA1.Text) * Val(txtC1.Text))   'Operació dins l'arreltxtA3 = 2 * Val(txtA2.Text)                                         'Terme A per DosEnd Sub             'Finaliztza la primera part de l'operació.             'Tornem a Canviar de coma a punt. Private Sub txtB3_Change()                    'Canvi de Coma a PunttxtB3 = Replace(txtB3, ",", ".")End SubPrivate Sub txtraiz_Change()                    'Canvi de Coma a PunttxtRaiz = Replace(txtRaiz, ",", ".")End SubPrivate Sub txtA3_Change()                    'Canvi de Coma a PunttxtA3 = Replace(txtA3, ",", ".")End Sub   Private Sub Command1_Click()'Tercera part del codi , on es fan les operacions finals per mostrar el resultat'que queda dins l'arrel ja feta. Un altre problema trobat a l'hora de fer el programa'es fer l'arrel cuadrada. 'Al final es va optar per elevar a una potencia (1/2) on 2 es'l'index de l'arrel.   If Val(txtRaiz.Text) < 0 Then  'Posible falla                               'Si l'arrel dona negativa no es pot continuar resolent                               'per tant queda marcat que si l'operació ens torna el nombre                               'negatiu es donara misatge d'error.txtraiz1 = "No Válid"Else: txtraiz1 = Sqr(txtRaiz.Text)    'Arrel quadradatxtb4 = txtB3.TexttxtA4 = txtA3.TextEnd IfEnd Sub   'Solventació del problema de la coma.Private Sub txtraiz1_change()txtraiz1 = Format(txtraiz1.Text, "#######.00")'Limitar decimalsEnd Sub   Private Sub txtB4_Change()                       'Canvi de Coma a Punttxtb4 = Replace(txtb4, ",", ".")End SubPrivate Sub txtA4_Change()                       'Canvi de Coma a PunttxtA4 = Replace(txtA4, ",", ".")End Sub 'Part final on ens mostrara els dos posibles resultats obtinguts del valor de l'incognita x.Private Sub Command3_Click() txtXpos = (Val(txtb4.Text) + Val(txtraiz1.Text)) / Val(txtA4.Text)  ' -b + (..) txtXneg = (Val(txtb4.Text) - Val(txtraiz1.Text)) / Val(txtA4.Text)  ' -b - (..) txtXneg.Text = Format(txtXneg.Text, "#######.00") End Sub'Solventació del problema de la coma.  
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:

--- Citar --- 23.55 , y redondeo me queda 23,55 y no puedo cambiar la coma por el punto
--- Fin de la cita ---
Qué teimpide cambiar la coma por un punto o por una arroba o por lo que necesites... ?


--- Código: Visual Basic --- dim CambiarEsto as string, PorEsto as stringCambiarEsto = ","Poresto = "."text1.text = replace(text1.text, CambiarEsto, porEsto)  

Navegación

[0] Índice de Mensajes

Ir a la versión completa