Grazie raven74!

Ora finalmente questo programma in Javascript funziona! Ovvio la grafica è ancora da sistemare ma l'algoritmo è ok.

Il primo errore era anche banale, ma la soluzione per il secondo non la conoscevo proprio.

Però non ho capito l'ultimo.
Prima di tutto, io sapevo che il Teorema di Ruffini fosse in grado di scomporre ogni genere di equazione (in questo caso, il programma dovrebbe scomporre quelle di 3° grado), indipendentemente dai suoi coefficenti.
Mah, forse non è cosi :master:

Cmq, per rendere ancora più scorrevole il testo e per eliminare tutte quella serie di assegnazioni
codice:
m1=n1;
m2=n2;
m3=n3;
m4=n4;
m5=n5
k=-last[j]
j+=last.length
si potrebbe scrivere all'interno dell'if al posto di
codice:
if(d+n5==0){
  trovato = true;
  m1=n1;
  m2=n2;
  m3=n3;
  m4=n4;
  m5=n5
  k=-last[j]
  j+=last.length
}
si potrebbe scrivere una cosa del genere:
codice:
if(d+n5==0){
  trovato = true;
  k=-last[j]
  return false
}
In questo modo, con l'istruzione return si eviterebbe tutto quel passagio di informazioni dalle variabili di ciclo a quelle esterne utilizate per i calcoli.
in modo da utilizzare solo le variabili n1,n2,n3,n4,n5.

Cosa ne pensi?