Secondo me l'errore e' in questa riga invece
che dovrebbe essere:
Infatti le righe della tabella vanno sempre sommate. Cosi' funziona ma poi ci sono altri due errori che non sempre si verificano.
primo:
Cosa succede se per caso d e' maggiore di zero? Che l'if non viene eseguito e D non viene definito e il programma si ferma
meglio fare cosi':
secondo
Cosa succede se NON ci sono soluzioni? Che non viene eseguito questo if
E questo e' proprio il tuo caso quando metti d=-8.
Allora ti conviene mettere un controllo. Ad esempio una variabile che chiamerai trovato che verra' inizializzata a false e che farai diventare true solo nel caso che si entri nell'if. Poi dovrai gestire la cosa con un messaggio di errore
codice:
if(trovato == true)
{
qua ci metti tutti i calcoli
e stampi la tabella
}
else
document.write("Divisore non trovato")
ecco comunque il mio codice. Scusa se cambio l'indentazione ma io sono abituato cosi'...
Ciao
Codice PHP:
<html>
<head>
<style>table{text-align:center;border-collapse:collapse}
#l1{border-left:2px solid black}#l2{border-top:2px solid black}
#l3{border:2px solid black;border-right:0px;border-bottom:0px}</style>
<script type="text/javascript" language="JavaScript">
a=1
b=3
c=6
d=-8
document.write(a+"x<sup>3</sup>+"+b+"x<sup>2</sup>+"+c+"x+"+d+"=0<hr>")
last=new Array
//if(d<0)
//D=-d
D = Math.abs(d);
for(i=0;i<=D;i++)
{
if(D % i==0)
{
last.push(i)
last.push(-i)
}
}
document.write(last+"<hr>")
for(j=0;j<last.length;j++)
{
trovato = false;
n1=a*last[j]
n2=b+n1
n3=n2*last[j]
n4=c+n3
n5=n4*last[j]
if(d+n5==0)
{
trovato = true;
m1=n1;
m2=n2;
m3=n3;
m4=n4;
m5=n5
k=-last[j]
j+=last.length
}
}
if(trovato)
{
delta=Math.sqrt(m2*m2-4*a*m4)/(2*a)
x1=-k
x2=(-m2/(2*a))+delta
x3=(-m2/(2*a))-delta
if(k>0)
k="+"+k;
if(m2==1)
m2="+";
else if(m2>0)
m2="+"+m2;
if(m4>0)
m4="+"+m4;
document.write("(x"+k+")("+a+"x<sup>2</sup>"+m2+"x"+m4+")=0<hr>")
document.write("[i]S{"+x1+";"+x2+";"+x3+"}[/i]")
document.write("<hr><table width=150><tr><td></td><td id=l1>"+a+"</td><td>"+b+"</td><td>"+c+"</td><td id=l1>"+d+"</td></tr><tr><td>"+(-x1)+"</td><td id=l1></td><td>"+m1+"</td><td>"+m3+"</td><td id=l1>"+m5+"</td></tr><tr><td id=l2></td><td id=l3>"+a+"</td><td id=l2>"+m2+"</td><td id=l2>"+m4+"</td><td id=l3>0</td></tr></table>")
document.write("Trovato il divisore");
}
else
document.write("Divisore NON trovato");
</script>
</head></body></html>