Ancora javascript

tony883
raga mi aiutate....creare una pagine web che permetta in javascript di scrivere "n" numeri e stamparne la media utilizzando una casella di testo per inserire il primo valore e poi gestisca opportunamente l'evento di inserimento di altri numeri (per esempio mediante un pulsante).il risultato viene visualizzato in una finestra alert().

Risposte
gigilatrottola2
gli altri numeri dovrebbero essere inseriti sempre in quella textfield ed alla pressione del bottone lui dovrebbe rilevare il valore inserito e fare la media con quelli inseriti in precedenza?

tony883
si

tony883
nessuno potrebbe aiutarmi

gigilatrottola2




Untitled Document





VALORE:

MEDIA:





tony883
comunque non funziona

gigilatrottola2
eh hai ragione m sn dimenticato di fare la media della somma :P

cosi dovrebbe andare


tony883
non funziona

anonymous_be1147
Prova così. Stampa la media di 10 valori, ma puoi aumentarli cambiando la variabile numTot. Si può modificare anche facendogli calcolare la media ad libitum.

<html>
<head>
<title>Calcola la media di n numeri</title>
<script type="text/javascript">
var n = 1;
var totale = 0; // somma totale dei valori immessi
var numTot = 10; // numero di valori di cui calcolare la media

function calcolaMedia(val) {

    /* somma i numeri fino a numTot */
    totale = totale + parseFloat(val);
    /* riga successiva opzionale */
    document.form1.inserito.value = 'Numeri inseriti: ' + n.toString(); 

    if (n >= numTot) { /* calcola la media e la visualizza */
	alert('La media è ' + (totale/n).toString())
	n = 0;
	totale = 0;
    };

    n++
}

</script>
</head>

<body>
  <form name="form1">
    <label>Valore: </label>
    <input name="nuovoValore" type="text" value="0" size="5"/>
    <input name="inserito" type="button" value="Aggiungi" onclick=" calcolaMedia(document.form1.nuovoValore.value);"/>
  </form>
</body>

</html>

tony883
vorrei inserire un pulsante calcola cosi quando inserisco ad esempio 3 numeri posso premere calcola per fare la media e non aspettare di inserire 10 valori

anonymous_be1147
Ah, non avevo capito. Quindi vuoi una casella di inserimento, un pulsante per inserire il valore più un altro per calcolare la media, giusto?

gigilatrottola2
"tony883":
non funziona

veramente funziona benissimo... ogni numero inserito viene salvato e poi viene fatta la media degli n numeri inseriti fino a quel momento. ti ho solo messo la media in una textbox non editabile, ma nn credo ci voglia la scala a cambiarla con un alert(media) visto che tu stesso conosci alert.

anonymous_be1147
Così va bene?
<html>
<head>
<title>Calcola la media di n numeri</title>
<script type="text/javascript">
var n = 1;
var totale = 0; // somma totale dei valori immessi

</script>
</head>

<body>
  <form name="form1">
    <label>Valore: </label>
    <input name="nuovoValore" type="text" value="0" size="5"/>
    <input name="inserito" type="button" value="Aggiungi" onclick="totale = totale + parseFloat(document.form1.nuovoValore.value); n++"/>
    <input name="inserito" type="button" value="Calcola" onclick="alert('La media è ' + (totale/n).toString()); n = 0; totale = 0;"/>
  </form>
</body>

</html>

anonymous_be1147
Così è anche meglio... :)
<html>
<head>
<title>Calcola la media di n numeri</title>
<script type="text/javascript">
var n = 0;
var totale = 0; // somma totale dei valori immessi

function aggiungiValore (val) {
    totale = totale + parseFloat(val);
    n++;
}

function calcolaMedia () {
    alert('La media è ' + (totale/n).toString());
    n = 0;
    totale = 0;
}

</script>
</head>

<body>
  <form name="form1">
    <label>Valore: </label>
    <input name="nuovoValore" type="text" value="0" size="5"/>
    <input name="inserito" type="button" value="Aggiungi" onclick="aggiungiValore(document.form1.nuovoValore.value)"/>
    <input name="inserito" type="button" value="Calcola" onclick="calcolaMedia();"/>
  </form>
</body>

</html>

tony883
grazie mi potresti spiegare riga per riga cosa hai fatto

anonymous_be1147
1    <script type="text/javascript">
2    var n = 0;
3    var totale = 0; // somma totale dei valori immessi
4
5    function aggiungiValore (val) {
6        totale = totale + parseFloat(val);
7        n++;
8    }
9
10    function calcolaMedia () {
11      alert('La media è ' + (totale/n).toString());
12      n = 0;
13      totale = 0;
14  }
15  </script>


Righe 2 e 3: definisco due variabili che conterranno rispettivamente il numero di valori immessi e la loro somma

Righe 5-8: definisco la funzione che aggiunge il nuovo valore immesso dall'utente (che è sotto forma di stringa) al totale corrente. Per convertire in numero tale valore utilizzo la funzione predefinita parseFloat(). Incremento poi n, perché è stato aggiunto un valore.

Righe 10-14: definisco la funzione che calcola la media, che è data da totale diviso n, e la visualizza. Utilizzo la funzione toString() per convertirla in una stringa e sommarla al messaggio da passare ad alert(). Azzero le due variabili n e totale, per procedere con il calcolo della media di nuovi valori.

1  <form name="form1">
2   <label>Valore: </label>
3    <input name="nuovoValore" type="text" value="0" size="5"/>
4    <input type="button" value="Aggiungi" onclick="aggiungiValore(document.form1.nuovoValore.value)"/>
5    <input type="button" value="Calcola" onclick="calcolaMedia();"/>
6  </form>

Riga 2: creo un'etichetta

Riga 3: creo un campo d'inserimento per i valori da inserire

Riga 4: creo un pulsante d'inserimento e associo all'evento click del mouse l'esecuzione della funzione aggiungiValore() definita in precedenza. A tale funzione passo il valore inserito nel campo precedente, cioè document.form1.nuovoValore.value.

Riga 5: creo un pulsante per il calcolo della media e associo all'evento click del mouse da parte dell'utente l'esecuzione della funzione calcolaMedia().

anonymous_be1147
"gigilatrottola":
veramente funziona benissimo...

Confermo, anche se a me funziona in Firefox solo rimuovendo la dichiarazione di DOCTYPE all'inizio del file, oppure modificando

form1.media.value = parseFloat(media / i);

in

document.form1.media.value = parseFloat(media / i);

tony883
"anonymous_be1147":
1    <script type="text/javascript">
2    var n = 0;
3    var totale = 0; // somma totale dei valori immessi
4
5    function aggiungiValore (val) {
6        totale = totale + parseFloat(val);
7        n++;
8    }
9
10    function calcolaMedia () {
11      alert('La media è ' + (totale/n).toString());
12      n = 0;
13      totale = 0;
14  }
15  </script>


Righe 2 e 3: definisco due variabili che conterranno rispettivamente il numero di valori immessi e la loro somma

Righe 5-8: definisco la funzione che aggiunge il nuovo valore immesso dall'utente (che è sotto forma di stringa) al totale corrente. Per convertire in numero tale valore utilizzo la funzione predefinita parseFloat(). Incremento poi n, perché è stato aggiunto un valore.

Righe 10-14: definisco la funzione che calcola la media, che è data da totale diviso n, e la visualizza. Utilizzo la funzione toString() per convertirla in una stringa e sommarla al messaggio da passare ad alert(). Azzero le due variabili n e totale, per procedere con il calcolo della media di nuovi valori.

1  <form name="form1">
2   <label>Valore: </label>
3    <input name="nuovoValore" type="text" value="0" size="5"/>
4    <input type="button" value="Aggiungi" onclick="aggiungiValore(document.form1.nuovoValore.value)"/>
5    <input type="button" value="Calcola" onclick="calcolaMedia();"/>
6  </form>

Riga 2: creo un'etichetta

Riga 3: creo un campo d'inserimento per i valori da inserire

Riga 4: creo un pulsante d'inserimento e associo all'evento click del mouse l'esecuzione della funzione aggiungiValore() definita in precedenza. A tale funzione passo il valore inserito nel campo precedente, cioè document.form1.nuovoValore.value.

Riga 5: creo un pulsante per il calcolo della media e associo all'evento click del mouse da parte dell'utente l'esecuzione della funzione calcolaMedia().


grazie mille

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.