Preguntas tipo Formula - Función poly_frac()

Re: Preguntas tipo Formula - Función poly_frac()

de Miguel Bejarano -
Número de respuestas: 0
Y éste otro que se llamaría
Respuesta = poly_frac_latex("x", [ a, c, e ] , [ b, d, f ] );
y sirve para lo mismo que poly(), pero acepta fracciones

# ----------------- Variables de entrada ---------------------
Variable = "x";
CadenaIniNum = [ a , c , e ];
CadenaIniDen = [ b , d , f ];
# ----------------- Procedimiento ---------------------

Signos = [ "+" , "-" , ""];
Cadena = "";
CantTerm = len(CadenaIniNum);

# ----- Llena la lista de índices -------

Lista = fill(CantTerm, 0);
Cont = 0;
for ( i : Lista) {
Lista[Cont] = Cont;
Cont = Cont + 1;
}
# ----- Detecta primer término diferente de 0 -------

PrimerTerm = 0;
for ( i : Lista)
PrimerTerm = (PrimerTerm == 0 && CadenaIniNum[i] <> 0)? i : PrimerTerm;

for ( i : Lista) {

# ------------------ Coeficiente ----------------------
iNum = CadenaIniNum[i];
iDen = (CadenaIniDen[i] == 0)? 1 : CadenaIniDen[i];
iNumAbs = abs(iNum);
iDenAbs = abs(iDen);
MCD = gcd( iNumAbs , iDenAbs);
iNumAbs = iNumAbs / MCD;
iDenAbs = iDenAbs / MCD;
iCadCoefPos = [ "", join("" , iNumAbs) , join("" , "\\frac{" , iNumAbs, "}{", iDenAbs, "}"), "1" ];
Pos = (iNumAbs == 0)? 0 : ( (( iNumAbs == iDenAbs) && (i < CantTerm - 1) )? 0: ((iDenAbs == 1)? 1 : ((( iNumAbs == iDenAbs))? 3 : 2) ) );
iCadCoef = iCadCoefPos[Pos];

# ------------------- Signo -------------------------

iPositivo = (iNum > 0 && iDen > 0) || (iNum < 0 && iDen < 0) ;

iSignoPos = ( (i < PrimerTerm && iPositivo) || iNum == 0 )? 2: (( iPositivo )? 0 : 1);
iSigno = Signos[iSignoPos];

# ------------------ Expresión --------------------------

iExp = CantTerm - i - 1;
iExpresPos = [ "" , Variable, join("", Variable, "^", iExp) ];
Pos = (iNum == 0 || iExp == 0)? 0 : (( iExp == 1)? 1 : 2 ) ;
iExpres = iExpresPos[Pos];
Cadena = join(" ", Cadena, iSigno, iCadCoef , iExpres);
}

Respuesta = Cadena;