Menu

Error en tabulacion

2016-08-09
2016-08-10
  • Compsystems

    Compsystems - 2016-08-09

    Hola, la tabulacion para el siguiente caso falla

    Proceso Analisis_de_una_Ecuación_de_segundo_grado
    
        // versión 1.1.0 ultima edicion agosto 9 2016 
        // By CompSystems
        // Para ejecutar este codigo use PSEINT http://pseint.sourceforge.net
        Limpiar Pantalla
    
        // 1. Declarar variables y constantes
    
        Definir coeficiente1_a, coeficiente2_b, coeficiente3_c Como Reales; // Definición de coeficientes
        Definir raiz1, raiz2, raizMayor Como Reales;
        Definir raiz1ParteReal, raiz1ParteImag, raiz2ParteReal, raiz2ParteImag, discriminante Como Reales;
    
    
        Definir banderaDiscriminante Como entero;
        Definir expresionMat Como cadena;
        Definir parteReal como entero; parteReal = 1;
        Definir parteImag como entero; parteImag = 2;
    
        Dimension numComplejo1[2];
        Definir numComplejo1 Como Reales; // cada parte
    
        Dimension numComplejo2[2];
        Definir numComplejo2 Como Reales; // cada parte
    
        // 2. Informacion de entrada
    
        Imprimir "Calculo de las raices de una Ecuación Cuadratica o de segundo grado con una incognita" 
        Imprimir "forma canonica a*X^2+b*X^1+c*X^0=0 => a*X^2+b*X+c=0"; 
        // Mas info: http://es.wikipedia.org/wiki/Ecuaci%C3%B3n_de_segundo_grado
        Imprimir "";
        Imprimir "a es el coeficiente cuadrático"; 
        Imprimir "b es el coeficiente lineal"; 
        Imprimir "c es el coeficiente o término independiente"; 
        Imprimir "";
    
        // Solicitar Entrada de datos
        Imprimir "Entre el valor del coeficiente a: ",sin bajar; 
        Leer coeficiente1_a;
        Imprimir "Entre el valor del coeficiente b: ",sin bajar; 
        Leer coeficiente2_b;
        Imprimir "Entre el valor del coeficiente c: ",sin bajar; 
        Leer coeficiente3_c; 
    
        // Impresion de los datos de entrada
        Imprimir "";
        Imprimir "Los coeficientes son a = ",coeficiente1_a,", b = ",coeficiente2_b,", c = ",coeficiente3_c;
    
        // Chequeo de argumentos (coeficientes) de entrada
        Si coeficiente1_a = 0 Entonces
            Si coeficiente2_b = 0 Entonces
                Si coeficiente3_c = 0 Entonces
                    Escribir "No hay ecuación, la expresion entrada entrada es el numero cero y la ecuacion se reduce a 0=0";
                Sino // el coeficiente3 no es cero
                    Escribir "Contradiccion, la expresion entrada es un numero y la ecuacion es falsa", coeficiente3_c," = 0";
                FinSi
            Sino // el coeficiente2 no es cero
                Escribir "La expresion entrada es a una ecuación lineal";
                Escribir "Solucion: x = -c/a, x = ", -coeficiente3_c/coeficiente2_b;
            FinSi
        Sino
    
            //llevando expresion de entrada a expresion mas estandard -1*x^2 => -x^2,  1*x^2 => x^2" 
            Imprimir "";
            Imprimir "La ecuacion Cuadratica es: " ,sin bajar;
            expresionMat = ""
    
            Si coeficiente1_a = -1 Entonces
                expresionMat = expresionMat+"-"
            Sino
                Si no coeficiente1_a = 1 Entonces
                    expresionMat = expresionMat+ConvertirATexto(coeficiente1_a)+"*";
                FinSi
            Fin Si
            expresionMat = expresionMat+"x^2" 
    
            Si coeficiente2_b <> 0 Entonces
                Si coeficiente2_b > 0 Entonces
                    expresionMat = expresionMat+"+"                 
                FinSi
    
                Si coeficiente2_b = -1 Entonces
                    expresionMat = expresionMat+"-"
                Sino
                    Si no coeficiente2_b = 1 Entonces
                        expresionMat = expresionMat+ConvertirATexto(coeficiente2_b)+"*";
                    FinSi
                Fin Si
                expresionMat = expresionMat+"x"
            Fin Si
    
    
            Si coeficiente3_c <> 0 Entonces
                Si coeficiente3_c > 0  Entonces
                    expresionMat = expresionMat+"+"
                Fin Si
                expresionMat = expresionMat+ConvertirATexto(coeficiente3_c)
            Fin Si
            Imprimir expresionMat+"0"
    
            // Calculos
            discriminante = coeficiente2_b^2 - 4.0 * coeficiente1_a * coeficiente3_c;
            Imprimir "La formula del Discriminate de la ecuacion cuadratica es: D = b^2 -4*a*c";
            Escribir "D = ",discriminante;
    
            // informacion de las raices
            Si discriminante == 0 Entonces
                Escribir "";
                Escribir "Como el discriminante es 0 entonces hay 2 soluciones iguales de numeros reales"
                Escribir "o que es lo mismo, 1 solucion en los numeros reales con multiplicidad 2"
                Escribir "(la parábola sólo toca en un solo punto al eje de las abscisas X)";
                banderaDiscriminante := 1;
            Sino
                Si discriminante <= 0 Entonces
                    Escribir "";
                    Escribir "Como el discriminante es negativo entonces hay 2 soluciones en los numeros complejos, (un numero complejo y su conjugado)"
                    Escribir "(la parábola no corta al eje de las abscisas X)";
                    banderaDiscriminante := 0;
                Sino // discriminante >=0
                    Escribir ""; 
                    Escribir "Como el discriminante es positivo entonces hay 2 soluciones diferentes de numeros reales"
                    escribir "(la parábola cruza dos veces el eje de las abscisas X)";
                    banderaDiscriminante := 2;
                FinSi
            FinSi
    
            // calculo de las raices
            Segun banderaDiscriminante Hacer
                caso 0: 
                    Escribir ""
                    raiz1ParteReal := -coeficiente2_b / ( 2*coeficiente1_a );
                    raiz1ParteImag := raiz(-discriminante) / ( 2*coeficiente1_a );
    
                    raiz2ParteReal := raiz1ParteReal;
                    raiz2ParteImag := -raiz1ParteImag;          
    
                    numComplejo1[parteReal] = raiz1ParteReal;
                    numComplejo1[parteImag] = raiz1ParteImag;
    
                    numComplejo2[parteReal] = raiz2ParteReal;
                    numComplejo2[parteImag] = raiz2ParteImag;
    
                    Escribir ""
                    Escribir "Primera raiz: ",numComplejo1[parteReal] sin bajar
                    Si numComplejo1[parteImag] >= 0 Entonces
                        Imprimir "+",numComplejo1[parteImag] sin bajar
                    sino 
                        Imprimir numComplejo1[parteImag] sin bajar
                    FinSi
                    Escribir "*i"
    
                    Escribir "Segunda raiz: ",numComplejo2[parteReal] sin bajar             
                    Si numComplejo2[parteImag] >= 0 Entonces
                        Imprimir "+",numComplejo2[parteImag] sin bajar
                    sino 
                        Imprimir numComplejo2[parteImag] sin bajar
                    FinSi
                    Escribir "*i"
    
                    Imprimir "ParteReal = ",raiz1ParteReal
                    Imprimir "parteImag = ±",raiz1ParteImag
    
                caso 1:
                    Escribir ""
                    raiz1 := -coeficiente2_b / ( 2*coeficiente1_a );
                    raiz2 := raiz1; // Raiz1 == Raiz2 (multiplicidad 2)
                    Escribir "raiz 1: ",raiz1; 
                    Escribir "raiz 2: ",raiz2; 
    
                caso 2:
                    Escribir ""
                    raiz1 := ( -coeficiente2_b + raiz(discriminante) ) / ( 2*coeficiente1_a );
                    raiz2 := ( -coeficiente2_b - raiz(discriminante) ) / ( 2*coeficiente1_a );
    
                    // Ordenando raices de menor a mayor para una mejor impresion
                    Si raiz1 >= raiz2 Entonces
                        raizMayor := raiz1;
                        raiz1 = raiz2;
                        raiz2 = raizMayor;
                    FinSi
                    Escribir "Primera raiz: ",raiz1;
                    Escribir "Segunda raiz: ",raiz2;
    
                //De Otro Modo:
    
            FinSegun
    
                Escribir ""
                Escribir "La suma de las raices se calcula con la formula s=-b/a, s = ",-coeficiente2_b / coeficiente1_a 
                Escribir "prueba sumando las raices = " sin bajar 
                Si banderaDiscriminante = 0 Entonces
                    Escribir (raiz1ParteReal+raiz2ParteReal)+(raiz1ParteImag+raiz2ParteImag)
                Sino
                    Escribir raiz1 + raiz2
                Fin Si
    
    
                Escribir ""
                Escribir "El producto de las raices se calcula con la formula m=-b/a, m = ",coeficiente3_c / coeficiente1_a 
                Escribir "prueba con las raices = "  sin bajar
                Si banderaDiscriminante != 0 Entonces
                    Escribir raiz1 * raiz2
                Sino
                    Escribir ((raiz1ParteReal*raiz2ParteReal)-(raiz1ParteImag*raiz2ParteImag) ) + ( (raiz1ParteReal*raiz2ParteImag) + (raiz1ParteImag*raiz1ParteReal) )
            Fin Si
    
            Escribir ""
        FinSi
    
    FinProceso
    
    
    // Ejemplos para probar los tres casos
    // ejp1: 1*X^2 +2*X +3 raices { -1 +1.4142*i, -1 -1.4142*i }
    // ejp2: 1*X^2 -11.6*X +33.64 raices { 5.8, 5.8 } // determinante cero
    // ejp3: 1*X^2 -5*X +6 raices { 2, 3 } // determinante mayor que cero
    // ejp4: -5*X^2 +6*X +9 raices { -.86969384567, 2.06969384567 }
    
     
  • Compsystems

    Compsystems - 2016-08-10

    Qué pena, el código anterior tiene muchos errores ortográficos, los corregí en la más reciente versión de mi programa

    Proceso Análisis_de_una_Ecuación_de_segundo_grado
    
        // versión 1.1.0 ultima edición agosto 10 2016 
        // By Jaime Meza AKA CompSystems
        // Para ejecutar este seudocódigo use PSEINT http://pseint.sourceforge.net PSEINT programa 100% en castellano y desarrollado por Pablo (Argentina)
        Limpiar Pantalla
    
        // 1. Declarar variables y constantes
    
        Definir coeficiente1_a, coeficiente2_b, coeficiente3_c Como Reales; // Definición de coeficientes
        Definir raiz1, raiz2, raizMayor Como Reales;
        Definir raiz1ParteReal, raiz1ParteImag, raiz2ParteReal, raiz2ParteImag, discriminante Como Reales;
    
    
        Definir banderaDiscriminante Como entero;
        Definir expresionMat Como cadena;
        Definir parteReal como entero; parteReal = 1;
        Definir parteImag como entero; parteImag = 2;
    
        Dimensión numComplejo1[2];
        Definir numComplejo1 Como Reales; // cada parte
    
        Dimensión numComplejo2[2];
        Definir numComplejo2 Como Reales; // cada parte
    
        // 2. Información de entrada
    
        Imprimir "Calculo de las raíces de una Ecuación Cuadrática o de segundo grado con una incógnita" 
        Imprimir "forma canónica a*X^2+b*X^1+c*X^0=0 => a*X^2+b*X+c=0"; 
        // Mas info: http://es.wikipedia.org/wiki/Ecuaci%C3%B3n_de_segundo_grado
        Imprimir "";
        Imprimir "a es el coeficiente cuadrático"; 
        Imprimir "b es el coeficiente lineal"; 
        Imprimir "c es el coeficiente o término independiente"; 
        Imprimir "";
    
        // Solicitar Entrada de datos
        Imprimir "Entre el valor del coeficiente a: ",sin bajar; 
        Leer coeficiente1_a;
        Imprimir "Entre el valor del coeficiente b: ",sin bajar; 
        Leer coeficiente2_b;
        Imprimir "Entre el valor del coeficiente c: ",sin bajar; 
        Leer coeficiente3_c; 
    
        // Impresión de los datos de entrada
        Imprimir "";
        Imprimir "Los coeficientes son a = ",coeficiente1_a,", b = ",coeficiente2_b,", c = ",coeficiente3_c;
    
        // Chequeo de argumentos (coeficientes) de entrada
        Si coeficiente1_a = 0 Entonces
            Si coeficiente2_b = 0 Entonces
                Si coeficiente3_c = 0 Entonces
                    Escribir "No hay ecuación, la expresión entrada es el número cero y la ecuación se reduce a 0=0";
                Sino // el coeficiente3 no es cero
                    Escribir "Contradicción, la expresión entrada es un número y la ecuación es falsa", coeficiente3_c," = 0";
                FinSi
            Sino // el coeficiente2 no es cero
                Escribir "La expresión entrada es a una ecuación lineal";
                Escribir "Solución: x = -c/a, x = ", -coeficiente3_c/coeficiente2_b;
            FinSi
        Sino
    
            //llevando expresión de entrada a expresión mas estándar -1*x^2 => -x^2,  1*x^2 => x^2" 
            Imprimir "";
            Imprimir "La ecuación Cuadrática es: " ,sin bajar;
            expresionMat = ""
    
            Si coeficiente1_a = -1 Entonces
                expresionMat = expresionMat+"-"
            Sino
                Si no coeficiente1_a = 1 Entonces
                    expresionMat = expresionMat+ConvertirATexto(coeficiente1_a)+"*";
                FinSi
            Fin Si
            expresionMat = expresionMat+"x^2" 
    
            Si coeficiente2_b <> 0 Entonces
                Si coeficiente2_b > 0 Entonces
                    expresionMat = expresionMat+"+"                 
                FinSi
    
                Si coeficiente2_b = -1 Entonces
                    expresionMat = expresionMat+"-"
                Sino
                    Si no coeficiente2_b = 1 Entonces
                        expresionMat = expresionMat+ConvertirATexto(coeficiente2_b)+"*";
                    FinSi
                Fin Si
                expresionMat = expresionMat+"x"
            Fin Si
    
    
            Si coeficiente3_c <> 0 Entonces
                Si coeficiente3_c > 0  Entonces
                    expresionMat = expresionMat+"+"
                Fin Si
                expresionMat = expresionMat+ConvertirATexto(coeficiente3_c)
            Fin Si
            Imprimir expresionMat+"0"
    
            // Cálculos
            discriminante = coeficiente2_b^2 - 4.0 * coeficiente1_a * coeficiente3_c;
            Imprimir "La fórmula del Discriminante de la ecuación cuadrática es: D = b^2 -4*a*c";
            Escribir "D = ",discriminante;
    
            // información de las raíces
            Si discriminante == 0 Entonces
                Escribir "";
                Escribir "Como el discriminante es 0 entonces hay 2 soluciones iguales de números reales"
                Escribir "o que es lo mismo, 1 solución en los números reales con multiplicidad 2"
                Escribir "(la parábola sólo toca en un solo punto al eje de las abscisas X)";
            banderaDiscriminante := 1;
        Sino
            Si discriminante <= 0 Entonces
                Escribir "";
                Escribir "Como el discriminante es negativo entonces hay 2 soluciones en los números complejos, (un numero complejo y su conjugado)"
                Escribir "(la parábola no corta al eje de las abscisas X)";
            banderaDiscriminante := 0;
        Sino // discriminante >=0
            Escribir ""; 
            Escribir "Como el discriminante es positivo entonces hay 2 soluciones diferentes de números reales"
            escribir "(la parábola cruza dos veces el eje de las abscisas X)";
        banderaDiscriminante := 2;
    FinSi
    FinSi
    
    // cálculo de las raíces
    Segun banderaDiscriminante Hacer
        caso 0: 
            Escribir ""
        raiz1ParteReal := -coeficiente2_b / ( 2*coeficiente1_a );
    raiz1ParteImag := raiz(-discriminante) / ( 2*coeficiente1_a );
    
    raiz2ParteReal := raiz1ParteReal;
    raiz2ParteImag := -raiz1ParteImag;          
    
    numComplejo1[parteReal] = raiz1ParteReal;
    numComplejo1[parteImag] = raiz1ParteImag;
    
    numComplejo2[parteReal] = raiz2ParteReal;
    numComplejo2[parteImag] = raiz2ParteImag;
    
    Escribir ""
    Escribir "Primera raiz: ",numComplejo1[parteReal] sin bajar
    Si numComplejo1[parteImag] >= 0 Entonces
        Imprimir "+",numComplejo1[parteImag] sin bajar
    sino 
        Imprimir numComplejo1[parteImag] sin bajar
    FinSi
    Escribir "*i"
    
    Escribir "Segunda raiz: ",numComplejo2[parteReal] sin bajar             
    Si numComplejo2[parteImag] >= 0 Entonces
        Imprimir "+",numComplejo2[parteImag] sin bajar
    sino 
        Imprimir numComplejo2[parteImag] sin bajar
    FinSi
    Escribir "*i"
    
    Imprimir "ParteReal = ",raiz1ParteReal
    Imprimir "parteImag = ±",raiz1ParteImag
    
    caso 1:
        Escribir ""
    raiz1 := -coeficiente2_b / ( 2*coeficiente1_a );
    raiz2 := raiz1; // Raiz1 == Raiz2 (multiplicidad 2)
    Escribir "raiz 1: ",raiz1; 
    Escribir "raiz 2: ",raiz2; 
    
    caso 2:
        Escribir ""
    raiz1 := ( -coeficiente2_b + raiz(discriminante) ) / ( 2*coeficiente1_a );
    raiz2 := ( -coeficiente2_b - raiz(discriminante) ) / ( 2*coeficiente1_a );
    
    // Ordenando raíces de menor a mayor para una mejor impresión
    Si raiz1 >= raiz2 Entonces
    raizMayor := raiz1;
    raiz1 = raiz2;
    raiz2 = raizMayor;
    FinSi
    Escribir "Primera raiz: ",raiz1;
    Escribir "Segunda raiz: ",raiz2;
    
    //De Otro Modo:
    
    FinSegun
    
    Escribir ""
    Escribir "Comprobación de las soluciones"
    Escribir "La suma de las raíces se calcula con la formula s=-b/a, s = ",-coeficiente2_b / coeficiente1_a 
    Escribir "prueba sumando las raíces = " sin bajar 
    Si banderaDiscriminante = 0 Entonces
        Escribir (raiz1ParteReal+raiz2ParteReal)+(raiz1ParteImag+raiz2ParteImag)
    Sino
        Escribir raiz1 + raiz2
    Fin Si
    
    
    Escribir ""
    Escribir "El producto de las raíces se calcula con la formula m=-b/a, m = ",coeficiente3_c / coeficiente1_a 
    Escribir "prueba con las raices = "  sin bajar
    Si banderaDiscriminante != 0 Entonces
        Escribir raiz1 * raiz2
    Sino
        Escribir ((raiz1ParteReal*raiz2ParteReal)-(raiz1ParteImag*raiz2ParteImag) ) + ( (raiz1ParteReal*raiz2ParteImag) + (raiz1ParteImag*raiz1ParteReal) )
    Fin Si
    
    Escribir ""
    FinSi
    
    FinProceso
    
    
    // Ejemplos para probar los tres casos
    // ejp1: 1*X^2 +2*X +3 raises { -1 +1.4142*i, -1 -1.4142*i }
    // ejp2: 1*X^2 -11.6*X +33.64 raíces { 5.8, 5.8 } // determinante cero
    // ejp3: 1*X^2 -5*X +6 raíces { 2, 3 } // determinante mayor que cero
    // ejp4: -5*X^2 +6*X +9 raices { -.86969384567, 2.06969384567 }
    
     

Anonymous
Anonymous

Add attachments
Cancel





MongoDB Logo MongoDB