Formula question type (No Stack)

Re: Formula question type (No Stack)

by Miguel Bejarano -
Number of replies: 0
An this is poly2(). It works like poly() but with fractions.







# ----------------- Variables de entrada ---------------------
Variable = "x";
CadenaIniNum = [ -1 , -1 , -4 , 2 , 0 ];
CadenaIniDen = [ 1 , 2 , -2 , 0 , 2 ];
# ----------------- Procedimiento ---------------------

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

# ----- Detecta primer término diferente de 0 -------

PrimerTerm = 0;
for ( i : [0 : 5])
PrimerTerm = (PrimerTerm == 0 && CadenaIniNum[i] 0)? i : PrimerTerm;

for ( i : [ 0 : 5] ) {

# ------------------ 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, "}") ];
Pos = (iNumAbs == 0)? 0 : ( ( iNumAbs == iDenAbs )? 0: ((iDenAbs == 1)? 1 : 2) );
iCadCoef = iCadCoefPos[Pos];

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

iSignoPos = (( i = 0) || iNum == 0 )? 2: (( (iNum > 0 && iDen > 0) || (iNum < 0 && iDen < 0) )? 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);
}