15 messaggi dal 04 ottobre 2002
Sto cercando di creare una funzione che sommi gli interi tra una variabile "istart" e una "istop" e che ad ogni somma visualizzi il risultato. Chi mi può aiutare ? sto studiando adesso asp3 ma da solo mi blocco, magari la domanda è banale ma...
Grazie a tutti.

3.122 messaggi dal 16 maggio 2002
Prima di tutto studia il problema con carta e penna. Gauss a suo tempo (a soli 5 anni!!!) aveva trovato una elegantissima soluzione per questo problema, ovvero per la somma degli interi da 0 ad un numero qualunque. Il tuo caso si può ricondurre a questo, ad esempio se devi sommare gli interi da n a N (compresi) basta fare la somma da 0 a (N-n) e sommare n*(N-n+1).
La somma degli interi da 0 a Q si ottiene utilizzando opportunamente la proprietà associativa dell'addizione, cioè sommando il primo numero con l'ultimo, il secondo con il penultimo e così via, in modo che ogni somma dia sempre lo stesso risultato. Quindi la somma degli interi da 0 a Q vale
Q*(Q+1)/2
La somma da n a N quindi vale
(N-n)*(N-n+1)/2 + n*(N-n+1) = (N+n)*(N-n+1)/2
Spero che il risultato sia giusto e ti soddisfi

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
11.886 messaggi dal 09 febbraio 2002
Contributi
Questa è la funzione

Sub somma(istart, istop)
   if isNumeric(istart) and isNumeric(istop) then
      Dim passo
      Dim totale
      if istart<= istop then passo = 1 else passo = -1
         totale = 0
         for i = istart to istop step passo
            totale = totale + i
            Response.write("Dopo aver aggiunto " & i & " il totale è: " & totale & "<br>")
         next 
    else
       Response.write("Almeno uno dei parametri non è numerico")
   end if
End Sub


il primo if controlla se i parametri che gli passi sono numerici. Se non lo sono ti scrive un messaggio d'errore. Puoi usarla anche per i conteggi a ritroso per cui istart può anche essere maggiore di istop.
Per eseguire la funzione fai semplicemente:

<%
somma 1, 100
%>

e ti scriverà una riga per ogni intero che viene aggiunto.
Se vuoi calcolare velocemente la somma di tutti i numeri interi tra due estremi, puoi usare la formula:

a = 1
b = 100
(a+b)*(Abs(b-a)+1)/2

anche questa va bene se a > b.
Tutti e due i sistemi vanno bene con tutto l'insieme Z ciao

Enjoy learning and just keep making
11.886 messaggi dal 09 febbraio 2002
Contributi
AHHH era Gauss!!!
stavo per dire Cartesio o qualche altra stupidaggine, non ricordavo il nome così mi so stato zitto :)

Mi ricordo che alle superiori ci hanno raccontato la storiella di questo tizio che mostra la sua lavagnetta al maestro dell'asilo...

"mmhh... tu sei un po' bravino per avere 5 anni".

Tutto ciò per ricordarci a noi studenti medi che non ci saremmo arrivati manco a 40 anni

Enjoy learning and just keep making
3.122 messaggi dal 16 maggio 2002
Già, anche a noi il professore di matematica ha raccontato la storiella di Gauss a scuola a 5 anni: era molto turbolento allora la maestra per tenerlo impegnato gli ha dato per punizione il compito di sommare tutti gli interi da 1 a 100. Pochi minuti dopo Gauss è tornato con la soluzione

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.