コード例 #1
0
        public Funcion sumarFunciones(Funcion unaFuncion, Funcion otraFuncion)
        {
            var faseUnaFuncion  = unaFuncion.fase;
            var faseOtraFuncion = otraFuncion.fase;


            //Voy a trabajar todo a senos o pasarlo según necesite
            if (unaFuncion.tipoFuncion == TipoFuncion.Cos)
            {
                faseUnaFuncion = faseUnaFuncion + Math.PI / 2;
            }

            if (otraFuncion.tipoFuncion == TipoFuncion.Cos)
            {
                faseOtraFuncion = faseOtraFuncion + Math.PI / 2;
            }

            //Los convierto a complejos
            var fasorDeUnaFuncion  = new NumeroComplejo(unaFuncion.amplitud, faseUnaFuncion, NumeroComplejo.Forma.Polar);
            var fasorDeOtraFuncion = new NumeroComplejo(otraFuncion.amplitud, faseOtraFuncion, NumeroComplejo.Forma.Polar);

            var resultadoSuma = fasorDeOtraFuncion.sumarComplejos(fasorDeOtraFuncion);

            var resultadoFase = resultadoSuma.b;

            return(new Funcion(resultadoSuma.a, TipoFuncion.Sen, otraFuncion.frecuencia, resultadoFase));
        }
コード例 #2
0
        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
                    }
                }
            }
        }