Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Amagekure en 2 Marzo 2010, 01:12 am



Título: Ayuda con un simple programa en c#
Publicado por: Amagekure en 2 Marzo 2010, 01:12 am
 double x1, x2,bn;
            int a = Convert.ToInt16(textBox1.Text);
            int b = Convert.ToInt16(textBox2.Text);
            int c = Convert.ToInt16(textBox3.Text);

            bn = b * -1;
            x1 = (bn + Math.Sqrt(b^2 - 4 * a * c)) / (2 * a);
            x2 = (bn - Math.Sqrt(b^2 - 4 * a * c)) / (2 * a);

            textBox4.Text = x1.ToString();
            textBox5.Text = x2.ToString();

pues necesito que me digan que esta mal aqui, pues intento que me diga las raizes realies de una ecuacion de 2 grado   A,B,C son los 3 numeros que corresponden a la escuasion pero cuando le aplico la formula el resultado es un texto 'NeuN'  y no los resultados numericos que estoy buscando, alguien sabio que me diga que error estoy cometiendo en este programa


Título: Re: Ayuda con un simple programa en c#
Publicado por: Shell Root en 2 Marzo 2010, 02:24 am
Te sale NeuN, porque le estas sacando Sqrt a un valor negativo, por ejemplo.
Código
  1. MsgBox(Math.Sqrt(0 - 4))

Intentadlo así:
Código
  1.        Dim x1, x2, bn As Double
  2.        Dim a, b, c As Integer
  3.  
  4.        a = 1
  5.        b = 6
  6.        c = 1
  7.  
  8.        bn = b * -1
  9.  
  10.        x1 = (bn + Math.Sqrt(b ^ 2 - 4 * a * c)) / (2 *a)
  11.        x2 = (bn - Math.Sqrt(b ^ 2 - 4 * a * c)) / (2 * a)
  12.  
  13.        MsgBox(x1)
  14.        MsgBox(x2)


Título: Re: Ayuda con un simple programa en c#
Publicado por: raul338 en 2 Marzo 2010, 02:36 am
Seria mejor asi:
Código
  1.        Dim x1, x2, bn As Double
  2.        Dim a, b, c As Integer
  3.  
  4.        a = 1
  5.        b = 6
  6.        c = 1
  7.  
  8.        bn = b * -1
  9.  
  10.        Dim radicando As Double = Math.Pow(b, 2) - 4  * a * c
  11.  
  12.        If radicando = 0 Then
  13.               x1 = (bn) / (2 *a)
  14.               MsgBox(x1 & " y es raiz doble")
  15.        ElseIf radicando > 0 Then
  16.               x1 = (bn + Math.Sqrt(radicando)) / (2 *a)
  17.               x2 = (bn - Math.Sqrt(radicando)) / (2 * a)
  18.               MsgBox(x1)
  19.               MsgBox(x2)
  20.        Else
  21.               Msgbox ("La ecuacion no tiene racies reales")
  22.        End If
  23.  


Título: Re: Ayuda con un simple programa en c#
Publicado por: AckeR en 2 Marzo 2010, 06:06 am
Hola!

Pues tiene razón Alex, te dice eso porque saldria una raiz negativa (imaginaria).

Yo lo haría asi  :D

Código
  1.            int a, b, c;
  2.            double raiz,x1,x2;
  3.  
  4.            a = int.Parse(textBox1.Text);
  5.            b = int.Parse(textBox2.Text);
  6.            c = int.Parse(textBox3.Text);
  7.  
  8.  
  9.            if (a == 0)
  10.                MessageBox.Show("Error La Variable A no puede ser 0");
  11.            else
  12.            {
  13.                raiz = (b * b) - 4 * (a * c);
  14.                if (raiz < 0)
  15.                {
  16.                    MessageBox.Show("Error, raiz negativa (imaginaria)");
  17.                }
  18.                else
  19.                {
  20.                    x1 = ((-1 * b) + Math.Sqrt(raiz)) / (2 * a);
  21.                    x2 = ((-1 * b) - Math.Sqrt(raiz)) / (2 * a);
  22.  
  23.                    textBox4.Text = x1.ToString();
  24.                    textBox5.Text = x2.ToString();

suerte!


Título: Re: Ayuda con un simple programa en c#
Publicado por: Amagekure en 2 Marzo 2010, 18:59 pm
Buena por tu ayuda gracias a ustedes 3 termine mi programa gracias la mejor web Elhacker.net FORO