<HTML>
<HEAD>
<TITLE> Creado por Fox_Neo (si copias el código pon la fuente) </TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="javascript">
function Polinomio(grado) //creo la funcion para crear el vector y rellenarlo la variable grado me va a determinar la longitud del vector
{
var vector=new Array(); //declaración de vector para la función
for(var i=grado;i>=0;i--) //introducir los números en el vector hasta que llegue hasta el grado marcado
{
vector[i]=window.prompt("Introduce los numeros", "" );//introducimos los numeros
while(isNaN(vector[i])==true)//en esta parte se comprueba si lo introducido es un número o un caracter
//mediante la instrución isNaN que si es un caracter devuelve 1 (true)
{
window.alert("Valor no admitido. Solo permitido valores numéricos");
parseFloat(vector[i])= window.prompt("introduce los numeros", "" );
}
}
return vector; // Devuelve el vector obtenido
}
function gradopolinomio() //creación de función para introducir el grado y validarlo
{
var g=window.prompt("introduce el grado del polinomio"); // aqui se introduce el grado del polinomio
while(isNaN(g)==true) //valida la variable introducida si es numerica la acepta si no sale un mensaje
//de error hasta que se introduzca un numero
{
window.alert("Valor no admitido. Solo permitido valores numericos");
g=window.prompt("introduce el grado del polinomio");
}
return parseInt(g);
}
function suma(p1,p2,g1,g2) //declaracion de la funcion suma
{
var s=new Array(); //decalaración del vector interno del la función
if(g1>g2) //aqui se compara cual grado es mayor para que se genere un vector
//del tamaño adecuado y no queden operaciones sin reañizar
{
for(var b=(g2+1);b<=g1;b++)
{
var c=p2.push(0);
}
for(i=g1;i>=0;i--)
{
s[i]=parseFloat(p1[i])+parseFloat(p2[i]); // es necesario pasar los caracteres a valores de coma flotante
// porque sino une los números y no los suma
}
}
else
{
for(var b=(g1+1);b<=g2;b++)
{
var c=p1.push(0);
}
for(i=g2;i>=0;i--)
{
s[i]=parseFloat(p1[i])+parseFloat(p2[i]);
}
}
return s; //la función retorna el valor del vector suma
}
function resta(p1,p2,g1,g2)
{
var r=new Array(); //decalaración del vector interno del la función
if(g1>g2) //aqui se compara cual grado es mayor para que se genere un vector del tamaño adecuado
//y no queden operaciones sin reañizar
{
for(var b=(g2+1);b<=g1;b++) //otra manera de ordenar el vector sin tener que inicializar el vector a 0,
//aunque siempre es mejor inicializar el vector
{
var c=p2.push(0);
}
for(i=g1;i>=0;i--)
{
r[i]=parseFloat(p1[i])-parseFloat(p2[i]); // es necesario pasar los caracteres a valores de coma flotante
//porque sino une los números y no los suma
}
}
else
{
for(var b=(g1+1);b<=g2;b++)
{
var c=p1.push(0);
}
for(i=g2;i>=0;i--)
{
r[i]=parseFloat(p1[i])-parseFloat(p2[i]);
}
}
return r; //la función retorna el valor del vector resta
}
function multiplicacion(p1,p2,g1,g2)
{
var m= new Array(); // declaro los dos arrays necesarios
var arrayaux= new Array();
for(var i=parseInt(g1+g2);i>=0;i--) //pongo a cero los dos vectores para que luego puedadn sumar corectamente
//g1 es grado del polinomio1 y g2 grado de polinomio2
{
m[i]=0;
arrayaux[i]=0;
}
for(var a=g1;a>=0;a--)
{
for(var b=g2;b>=0;b--) //multiplica el 1º monomio por el segundo polinomio luego se guarda en el vector auxiliar
{
m[a+b]=parseFloat(p1[a])*parseFloat(p2[b]);
}
for(var i=parseInt(g1+g2);i>=0;i--) //guardo el resultado de la multiplicacion del monomoio para luego sumarlo
{
arrayaux[i]=parseFloat(arrayaux[i])+parseFloat(m[i]);
}
for(var i=parseInt(g1+g2);i>=0;i--) //cuando acaba de sumar el polinomio la variable donde se ha realizado
//la multiplicación del monomio por el polinomiose pone a 0 para evitar errores
{
m[i]=0;
}
}
return arrayaux;
}
function imprimir(P,g)
{
for(var i=g;i>=0;i--) //imprimir valores actualmente no imprime correctamente debiera de imprimir
//el valor del vector junto el signo y la x (menos si es 0 o 1) y la posición
//del vector como grado del polinomio imprimido como subindice (exceptuando 0 y 1)
{
var z=g;
if(i==z&&P[i]>1)
{
document.write( P[i] + "x<sup>"+i+"</sup>");
}
if(i==g&&P[i]==1)
{
document.write( "x<sup>"+i+"</sup>");
}
if(i>1&&z>P[i]>1)
{
document.write("+");
document.write( P[i] + "x<sup>"+i+"</sup>");
}
if(i>1&&P[i]==1)
{
document.write("+");
document.write("x<sup>"+ i +"</sup>");
}
if(i==1&&P[i]==1)
{
document.write("+");
document.write("x");
}
if(i==1&&P[i]>1)
{
document.write("+");
document.write(P[i] +"x");
}
if(i==0&&P[i]>0)
{
document.write("+");
document.write(P[i]);
}
if(i==0&&P[i]<0)
{
document.write("-");
document.write(Math.abs(P[i]));
}
if(i>1&&P[i]==-1)
{
document.write("-");
document.write("x<sup>"+i+"</sup>");
}
if(i>1&&P[i]<-1)
{
document.write("-");
document.write( Math.abs(P[i]) + "x<sup>"+i+"</sup>");
}
if(i==1&&P[i]<-1)
{
document.write("-");
document.write(Math.abs(P[i]) +"x");
}
if(i==1&&P[i]==-1)
{
document.write("-");
document.write(Math.abs(P[i]) +"x");
}
}
}
var grado1 = gradopolinomio(); //llamada a la función para introducir el grado del 1º polinomio
var Polinomio1 = new Array(); //declaración del vector Polinomio1 con el que se va a trabajar
Polinomio1 = Polinomio(grado1); //se llama a la función de creación del vector y se almacena en un vector
//global Polinomio1 para dejar a la función libre
window.alert("A continuación introduce los datos del 2º polinomio"); //mensaje que indica que se procedad a introducir el segundo polinomio
var grado2 = gradopolinomio(); //llamada a la función para introducir el grado del 2º polinomio
var Polinomio2 = new Array();//declaración del vector Polinomio2 con el que se va a trabajar
Polinomio2 = Polinomio(grado2);//se llama a la función de creación del vector y se almacena en un vector global
// Polinomio2 para dejar a la función libre
var vectorsuma= new Array(); //se crea un vector suma
vectorsuma = suma(Polinomio1,Polinomio2,grado1,grado2); // se llama a la funcion suma y el resultado se guarda en vectorsuma
var vectorresta= new Array();
vectorresta = resta(Polinomio1,Polinomio2,grado1,grado2);
var vectormultiplicacion = new Array();
vectormultiplicacion= multiplicacion(Polinomio1,Polinomio2,grado1,grado2);
window.alert("La suma tiene los siguientes valores de menor a mayor grado de exponente" +vectorsuma); //estas ventanas se ponen para
//ver realmente el resultado de la operación
window.alert("La resta tiene los siguientes valores menor a mayor grado de exponente" +vectorresta);
window.alert("La multiplicacion tiene los siguientes valores menor a mayor grado de exponente" +vectormultiplicacion);
</SCRIPT>
<H2>Polinomios con los que operar:</H2>
<SCRIPT>
document.write( "Polinomio1: ");
imprimir(Polinomio1,grado1);
document.write("</BR>");
document.write( "Polinomio2: ");
imprimir(Polinomio2,grado2);
</SCRIPT>
<H2>Resultado de la suma:</H2>
<SCRIPT>
imprimir(vectorsuma,vectorsuma.length);
document.write("</BR>");
</SCRIPT>
<H2>Resultado de la resta:</H2>
<SCRIPT>
imprimir(vectorresta,vectorresta.length);
document.write("</BR>");
</SCRIPT>
<H2>Resultado de la multiplicación:</H2>
<SCRIPT>
imprimir(vectormultiplicacion,vectormultiplicacion.length);
document.write("</BR>");
</SCRIPT>
</BODY>
</HTML>