PROBLEMA Problema funzionamento Javascript

Pubblicità

Bigabyte

Utente Attivo
Messaggi
268
Reazioni
9
Punteggio
49
Salve a tutti, sto cercando di creare un tool per calcolare il voto in decimi conseguito da uno studente mettendo in input come parametri il punteggio massimo ottenibile in un determinato compito e il punteggio ottenuto dallo studente.

L'algoritmo imposta la sufficienza (voto 6) al 67% del punteggio massimo ottenibile.
Dopodiché fa la differenza tra il punteggio massimo e il punteggio richiesto per la sufficienza e divide il totale per 16 (calcolando così la "differenza" che intercorre tra un mezzovoto e l'altro)

Poi c'è un ciclo while che dovrebbe incrementare l'indice dell'array dei voti quando non è ancora stato trovato il voto "corretto" e dovrebbe uscire dal ciclo quando invece c'è un riscontro.

Ho abbastanza dimestichezza con Java e C ma questa è la mia prima volta in assoluto con JS e non riesco a capire perché non funziona (ho scritto il programma in C con questo identico algoritmo e funziona perfettamente)

Il file .js è il seguente:
function calculate(input) {
var scoreObt = input.value;
var form = document.getElementById("calculator");
var scoreMax = form.scoreMax.value;


var i = scoreMax;
var average = scoreMax/100 * 67;
var dx = (scoreMax-average)/ 16;
var pos = 0;
var voti = new Array();
voti[0]="10";
voti[1]="10-";
voti[2]="9.5";
voti[3]="9+";
voti[4]="9";
voti[5]="9-";
voti[6]="8.5";
voti[7]="8+";
voti[8]="8";
voti[9]="8-";
voti[10]="7.5";
voti[11]="7+";
voti[12]="7";
voti[13]="7-";
voti[14]="6.5";
voti[15]="6+";
voti[16]="6";
voti[17]="6-";
voti[18]="5.5";
voti[19]="5+";
voti[20]="5";
voti[21]="5-";
voti[22]="4.5";
voti[23]="4+";
voti[24]="4";
voti[25]="4-";
voti[26]="3.5";
voti[27]="3+";
voti[28]="3";


while (i>scoreMax-dx*28) {
if(abs(i-scoreObt)<dx/2)
break;
else {
i -= dx;
pos++;
}
}
form.gradeObt.value = voti[pos];
}

mentre questa è la sezione del file html che implementa i form e chiama la funzione
<form id="calculator" action="">
<table cellspacing="5" cellpadding="0" width="500">
<tr>
<td class="testo" style="text-align:right">Inserisci il punteggio massimo:</td>
<td><input name="scoreMax" type="text" onkeyup="" size="5" /></td>
</tr>


<tr>
<td class="testo" style="text-align:right">Inserisci il punteggio ottenuto dallo studente:</td>
<td><input name="scoreObt" type="text" onkeyup="calculate(this)" size="5" /></td>
</tr>
<tr>
<td class="testo" style="text-align:right">Il voto conseguito dallo studente è:</td>
<td><input name="gradeObt" type="text" readonly="readyonly" size="5" /></td>
</tr>
</table>
</form>

Se qualcuno mi riuscisse a dare una dritta ne sarei immensamente grato :)

EDIT: RISOLTO! Dovevo scrivere Math.abs anziché semplicemente abs ...
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top