public NumeroComplejo DividirComplejos(NumeroComplejo z2)
        {
            NumeroComplejo z3 = new NumeroComplejo(0, 0, Forma.Binomica);
            NumeroComplejo z  = new NumeroComplejo(0, 0, Forma.Binomica);

            z    = this.formaBinomica();
            z2   = z2.formaBinomica();
            z3.a = ((z.a * z2.a) + (z.b * z2.b)) / (Math.Pow(z2.a, 2) + Math.Pow(z2.b, 2));
            z3.b = ((z.b * z2.a) - (z.a * z2.b)) / (Math.Pow(z2.a, 2) + Math.Pow(z2.b, 2));
            return(z3);
        }
        public NumeroComplejo multiplicarComplejos(NumeroComplejo z2)
        {
            NumeroComplejo z3 = new NumeroComplejo(0, 0, Forma.Binomica);
            NumeroComplejo z  = new NumeroComplejo(0, 0, Forma.Binomica);

            z    = this.formaBinomica();
            z2   = z2.formaBinomica();
            z3.a = (z.a * z2.a) - (z.b * z2.b);
            z3.b = (z.a * z2.b) + (z2.a * z.b);
            return(z3);
        }
        private void buttonOperar_Click(object sender, EventArgs e)
        {
            if (textBoxComplejo.Text == "" || textBoxIndice.Text == "")
            {
                MessageBox.Show("Debe Ingresar los 2 campos para operar!");
            }
            else
            {
                OperacionesBasicas OB = new OperacionesBasicas();
                if (!OB.esComplejoValido(this.textBoxComplejo.Text) || !this.esIndiceValido(textBoxIndice.Text)) // || !OperacionesBasicas.esComplejoValido(textBoxIndice.Text)
                {
                    MessageBox.Show("Debe ingresar el número complejo de la siguiente manera: forma binómica (a;b) o forma polar [a;b] - El índice debe ser un entero");
                }
                else
                {
                    int            n;
                    NumeroComplejo z1 = OB.parsearComplejo(textBoxComplejo.Text);
                    Int32.TryParse(textBoxIndice.Text, out n);

                    if (comboBoxOperaciones.SelectedIndex == -1)
                    {
                        MessageBox.Show("Debe seleccionar una operación!");
                    }
                    else
                    {
                        switch (comboBoxOperaciones.SelectedIndex)
                        {
                        case 0:     //Potenciación
                            NumeroComplejo zres = new NumeroComplejo(0, 0, NumeroComplejo.Forma.Binomica);
                            zres = z1.potencia(n);
                            comboBox1.Items.Clear();
                            comboBox1.Items.Add("(" + Math.Round(zres.formaBinomica().a, 3) + " ; " + Math.Round(zres.formaBinomica().b, 3) + ")" + " - [" + Math.Round(zres.formaPolar().a, 3) + " ; " + Math.Round(zres.formaPolar().b, 3) + " rad]");
                            comboBox1.SelectedIndex = 0;
                            break;

                        case 1:     //Radicación
                            List <NumeroComplejo> listaResultados = z1.raiz(n);
                            int k = 0;
                            comboBox1.Items.Clear();

                            listaResultados.ForEach(delegate(NumeroComplejo Z)
                            {
                                comboBox1.Items.Add("K=" + k + "-> (" + Math.Round(Z.formaBinomica().a, 3) + " ; " + Math.Round(Z.formaBinomica().b, 3) + ")" + " - [" + Math.Round(Z.formaPolar().a, 3) + " ; " + Math.Round(Z.formaPolar().b, 3) + " rad]");
                                k++;
                            });
                            comboBox1.SelectedIndex = 0;
                            break;
                        }
                    }
                }
            }
        }
        public NumeroComplejo restarComplejos(NumeroComplejo z2)
        {
            NumeroComplejo z3 = new NumeroComplejo(0, 0, Forma.Binomica);

            if (this.forma == Forma.Binomica)
            {
                if (z2.forma == Forma.Binomica)
                {
                    z3.a = this.a - z2.a;
                    z3.b = this.b - z2.b;
                    return(z3);
                }
                else
                {
                    z2   = z2.formaBinomica();
                    z3.a = this.a - z2.a;
                    z3.b = this.b - z2.b;
                    return(z3);
                }
            }
            else //this en forma polar
            {
                NumeroComplejo z = new NumeroComplejo(0, 0, Forma.Binomica);
                z = this.formaBinomica(); //lo que tngo en this, lo paso a binomica y lo asigno a z
                if (z2.forma == Forma.Binomica)
                {
                    z3.a = z.a - z2.a;
                    z3.b = z.b - z2.b;
                    return(z3.formaPolar());
                }
                else
                {
                    z2   = z2.formaBinomica();
                    z3.a = z.a - z2.a;
                    z3.b = z.b - z2.b;
                    return(z3.formaPolar());
                }
            }
        }
Пример #5
0
        private void buttonTransformar_Click(object sender, EventArgs e)
        {
            OperacionesBasicas OB = new OperacionesBasicas();

            if (!OB.esComplejoValido(this.textBoxComplejo.Text))
            {
                MessageBox.Show("Debe ingresar el número complejo de la siguiente manera: forma binómica (a;b) o forma polar [a;b]");
            }
            else
            {
                NumeroComplejo z1 = OB.parsearComplejo(textBoxComplejo.Text);

                if (z1.forma == NumeroComplejo.Forma.Binomica)
                {
                    NumeroComplejo zRes = z1.formaPolar();
                    labelResultado.Text = "[" + Math.Round(zRes.a, 3) + ";" + Math.Round(zRes.b, 3) + "]";
                }
                else
                {
                    NumeroComplejo zRes = z1.formaBinomica();
                    labelResultado.Text = "(" + Math.Round(zRes.a, 3) + ";" + Math.Round(zRes.b, 3) + ")";
                }
            }
        }
        private void buttonOperar_Click(object sender, EventArgs e)
        {
            if (textBoxComplejo1.Text == "" || textBoxComplejo2.Text == "")
            {
                MessageBox.Show("Debe Ingresar los 2 números complejos para operar!");
            }
            else
            {
                if (!this.esComplejoValido(textBoxComplejo1.Text) || !this.esComplejoValido(textBoxComplejo2.Text))
                {
                    MessageBox.Show("Debe Ingresar los números complejos de la siguiente manera: forma binómica (a;b) o forma polar [a;b]");
                    //MessageBox.Show(textBoxComplejo1.Text, textBoxComplejo2.Text);
                }
                else
                {
                    //aca se sacarian los numeros de cada textbox, de su expresion regular, se crean los complejos y se ejecuta la operacion correspondiente

                    //luego opero

                    //por ahora los hardcodeo...
                    //NumeroComplejo z1 = new NumeroComplejo(2, 3, NumeroComplejo.Forma.Binomica);
                    //algo asi
                    NumeroComplejo z1 = this.parsearComplejo(textBoxComplejo1.Text);
                    NumeroComplejo z2 = this.parsearComplejo(textBoxComplejo2.Text);

                    NumeroComplejo zres = new NumeroComplejo(0, 0, NumeroComplejo.Forma.Binomica);

                    if (comboBoxOperaciones.SelectedIndex == -1)
                    {
                        MessageBox.Show("Debe seleccionar una operación!");
                    }
                    else
                    {
                        switch (comboBoxOperaciones.SelectedIndex)
                        {
                        case 0:     //sumar
                            zres = z1.sumarComplejos(z2);

                            break;

                        case 1:     //restar
                            zres = z1.restarComplejos(z2);

                            break;

                        case 2:     //mult
                            zres = z1.multiplicarComplejos(z2);

                            break;

                        case 3:     //dividir
                            zres = z1.DividirComplejos(z2);

                            break;
                        }
                        //Despues distinguir si imprimir [a,b] o (a,b)
                        labelResultado.Text = "(" + Math.Round(zres.formaBinomica().a, 3) + " ; " + Math.Round(zres.formaBinomica().b, 3) + ")" + " - [" + Math.Round(zres.formaPolar().a, 3) + " ; " + Math.Round(zres.formaPolar().b, 3) + " rad]";

                        //armo un case con todas las posibles operaciones seleccionadas
                        //por cada operacion, opero con los complejos
                    }
                }
            }
        }