Novità

Script - Somma in vettore

BaffoBlù

Advanced Member >PLATINUM<
salve a tutti

Domanda :

Come faccio a sommare dei numeri (che possono essere variabili in quantità),
contenuti in un vettore contenitore?

per favore, mi fate qualche semplice esempio script vettore/numeri/somma?


Grazie
 
Con ReDim ... li cancelli.

Il Vettore mono-dimensionale è composto di un insieme di elementi.

Dunque se ... hai scritto Dim A(20) sono 20 (o 21) valori di A e sai quanti sono.

Se non lo hai dimensionato ed è variabile il Numero (enne) di elementi lo ricavi con UBound (A)

Per esempio N = UBound (A)

Noto (conosciuto) il numero di elementi li si può "scorrere" o leggere il vettore

dal primo all'ultimo con un ciclo For-Next

Utilizzando un indice. Ad esempio : "i"

For i = 1 to N

Scrivi A(i) ' scrive l'elemento i-esimo del vettore "A"

Next

Per la somma naturalmente si usa il segno "+" sino ad ottenere il Totale di una apposita variabile ad esempio "T"

In sintesi :

For i = 1 to UBbound (A)

T = T + A(i)

Next

Scrivi T

:)
 
Ultima modifica:
Codice:
Option Explicit
Sub Main

Dim Vettore
Dim i,x

Vettore=Array(1,12,4,23,45,78,89)
 
 For i = 1 To UBound(Vettore)
    x =x + Vettore(i)
 Next

Scrivi "Numero Di Vettori = " & i
Scrivi "La Somma  Dei Vettori = " & x

End Sub
 
Con ReDim ... li cancelli.

Il Vettore mono-dimensionale è composto di un insieme di elementi.

Dunque se ... hai scritto Dim A(20) sono 20 (o 21) valori di A e sai quanti sono.

Se non lo hai dimensionato ed è variabile il Numero (enne) di elementi lo ricavi con UBound (A)

Per esempio N = UBound (A)

Noto (conosciuto) il numero di elementi li si può "scorrere" o leggere il vettore

dal primo all'ultimo con un ciclo For-Next

Utilizzando un indice. Ad esempio : "i"

For i = 1 to N

Scrivi A(i) ' scrive l'elemento i-esimo del vettore "A"

Next

Per la somma naturalmente si usa il segno "+" sino ad ottenere il Totale di una apposita variabile ad esempio "T"

In sintesi :

For i = 1 to UBbound (A)

T = T + A(i)

Next

Scrivi T

:)
hai ragione 🙂
 
Grazie infinite a tutti, ho capito qualcosina in più su quel disgraziato di "UBound"...
solo che non ho raggiunto lo scopo perchè il mio vettore e fatto in modo diverso
quindi non sono riuscito ad applicarlo.

il mio Vettore è così :

Dim Vettore(20)

Nel senso che dentro il vettore ci possono andare fino a un massimo di 20 elementi,
ma non è detto che si arrivi a 20 perché la
quantità di elementi non è fissa, ma dovuta ad un altro fattore....
 
Grazie infinite a tutti, ho capito qualcosina in più su quel disgraziato di "UBound"...
solo che non ho raggiunto lo scopo perchè il mio vettore e fatto in modo diverso
quindi non sono riuscito ad applicarlo.

il mio Vettore è così :

Dim Vettore(20)

Nel senso che dentro il vettore ci possono andare fino a un massimo di 20 elementi,
ma non è detto che si arrivi a 20 perché la
quantità di elementi non è fissa, ma dovuta ad un altro fattore....
Basta che gli elementi non superino 21 va bene anche se non lo riempie trutto .
 
Grazie infinite a tutti, ho capito qualcosina in più su quel disgraziato di "UBound"...
solo che non ho raggiunto lo scopo perchè il mio vettore e fatto in modo diverso
quindi non sono riuscito ad applicarlo.

il mio Vettore è così :

Dim Vettore(20)

Nel senso che dentro il vettore ci possono andare fino a un massimo di 20 elementi,
ma non è detto che si arrivi a 20 perché la
quantità di elementi non è fissa, ma dovuta ad un altro fattore....

SI se lo dichiari va benissimo , ma poi lo devo mettere

Vettore(1)="21"

Vettore(2)="50"

E cosi via fino alla fine

Altrimenti bisogna valutare il tuo script se no non si fa nulla


(Tieni presente che lo script non fa quello che vuoi tu , ma fa solo quello che gli dici di fare)
 
Ultima modifica:
Option Explicit
Sub Main
Dim vettore (20)
Dim vettoretot



vettore(1)= 5

vettore (2)=9

vettore (3) =28
vettoretot=vettore(1)+ vettore(2)+vettore(3)
Scrivi vettoretot
End Sub
 
Per sommare è sempre meglio una condizione For
Codice:
Option Explicit
Sub Main
Dim vettore (20)
Dim vettoretot
Dim i,numVettori

numVettori=3 'Numero di vettori da sommare

vettore(1)= 5

vettore (2)=9

vettore (3) =28


For i = 1 To numVettori

vettoretot=vettoretot+ vettore(i)

Next
Scrivi vettoretot
End Sub
 
Oppure ci metti un imput

Codice:
Option Explicit
Sub Main
Dim vettore (20)
Dim vettoretot
Dim i,numVettori


numVettori = InputBox("QUANTI VETTORI VUOI SOMMARE ")
 
vettore(1)= 5

vettore (2)=9

vettore (3) =28


For i = 1 To numVettori

vettoretot=vettoretot+ vettore(i)

Next
Scrivi vettoretot
End Sub
 
BaffoBlu ...

... leggi con attenzione questo Script supponendo che, a priori,

NON sai quanti sono gli Estratti di MAGGIO 2024 a Bari.

Presumi siano (4 a settimana X 5 settimane = ) 20.

Dunque hai dimensionato per esempio E(20) per contenere ... fino a 20 Estratti.

Ora ... ad ogni NUOVA Estrazione li enumeri uno dopo l'altro e li memorizzi nel vettore E.

E(1) = ... - E(2) = ... Ecc. ecc. finché non finisce il mese.

Alla fine del mese hai contato che sono 18 e li vuoi sommare.

Come faresti con la calcolatrice ...

Prendi il Primo che è "E" e che tra parentesi è (1) poi scrivi "+"

Sommandolo ad un Totale = 0 ... Questo Totale diventa E(1) (perché prima Totale era Zero).

Poi al Totale aggiungi E(2) + ... Poi E(3) + .... poi E (4) + ... fino ad E(18)

A questo punto Tot contiene la Somma di tutti i 18 Estratti.

SCRIVI Tot ... scrive il totale degli Estratti di Maggio a Bari.

Codice:
Option Explicit
Sub Main
   Dim Es,R,K,E(20),P,I,Tot
   R = BA_ : P = 1
   For Es = 1 To EstrazioneFin
      If Mese(Es) = 5 Then
         If Anno(Es) = 2024 Then
            K = K + 1
            E(K) = Estratto(Es,R,P)
         End If
      End If
   Next
   Scrivi K & ") " & StringaNumeri(E,"+",True) & " = ",0,0
   For I = 1 To K
      Tot = Tot + E(I)
   Next
   Scrivi Tot,1,,,1
End Sub

:)
 
Grazie a tutti

genios,Delphi,druid,Joe per tutti gli esempi

Mi fanno capire sempre di più, ma non riesco ad introdurlo nello script.

Joe, mi sa che ha capito dove voglio andare a parare,
con questi ultimi esempi forse riuscirò a farlo

Come ho detto, la quantità degli elementi nel vettore non è fissa,
ma determinata da un altro fattore. (le estrazioni mensili - Variabili...)

E' questo ultimo fattore che non riesco ancora a gestire,
sennò con gli utili esempi riportati sarebbe stato molto facile.

mi divertirò a provarci, grazie a tutti


lo script sta qui a questo link
venite qui a leggere e capirete quale somma (da un Vettore) che non riesco a fare
nel modo in cui lo script è ormai impostato...


 
Questo conferma che lavorare su uno script già impostato ... complica le cose.

Per questo sto sull'esempio che (ti) ho fatto perché essendo generico lo si può poi adattare a tanto altro,

mentre essendo più semplice è più facile da capire.

In realtà sono 2 script ovvero 2 cicli for-next il primo raccoglie i numeri ... il secondo li somma.

Se ne poteva fare uno solo ove si sommano direttamente gli estratti.

Ed è un primo passo verso l'ottimizzazione e semplificazione dello script.

Puoi notare che le colonne (come gli estratti) sono 5 ed allora ... anche i totali sono 5.

Gli estratti anche sono 5 ... MA ... ognuno va indirizzato ad uno solo dei 5 Totali

E(1) si somma a Tot(1) / E(2) a Tot(2) ecc fino a E(5) con Tot(5)

Codice:
Option Explicit
Sub Main
   Dim Es,R,K,E(5),P,I,Tot(5)
   R = BA_
   Scrivi  NomeRuota (R)
   For Es = 1 To EstrazioneFin
      If Mese(Es) = 5 Then
         If Anno(Es) = 2024 Then
         Scrivi DataEstrazione (Es,,,"/") & " " ,1,0
         For P = 1 To 5
            E (P) = Estratto(Es,R,P)
            Scrivi FormatSpace(E(P),4,1) ,0,0
            Tot(P) = Tot(P) + E(P)
            Next
            Scrivi  " +"
         End If
      End If
   Next
   Scrivi "Totale Mese " & StringaNumeri (Tot," "),1,,,1
End Sub

:)
 
Diventa semplice immaginare

che da 1 mese possono diventare facilmente 12,

Semplicemente con un ciclo For-Next da 1 a 12.

L'unica avvertenza necessaria sarà quella di dover azzerare i totali ad ogni nuovo mese.

Si diceva che ReDim in Spaziometria (senza l'opzione Preserve) ridimensionando ... cancella.

Codice:
Option Explicit
Sub Main
   Dim Es,R,K,E(5),P,I,M
   R = BA_
   Scrivi NomeRuota(R)
   For M = 1 To 12
      ReDim Tot(5)
      For Es = 1 To EstrazioneFin
         If Mese(Es) = M Then
            If Anno(Es) = 2023 Then
               Scrivi DataEstrazione(Es,,,"/") & " ",1,0
               For P = 1 To 5
                  E(P) = Estratto(Es,R,P)
                  Scrivi FormatSpace(E(P),4,1),0,0
                  Tot(P) = Tot(P) + E(P)
               Next
               Scrivi " +"
            End If
         End If
      Next
      Scrivi "Totale Mese " & StringaNumeri(Tot," "),1,,,1
   Next
End Sub
 

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 05 ottobre 2024
    Bari
    68
    72
    67
    14
    56
    Cagliari
    02
    28
    61
    09
    13
    Firenze
    29
    25
    42
    67
    59
    Genova
    38
    67
    02
    08
    53
    Milano
    52
    47
    88
    74
    55
    Napoli
    02
    24
    71
    17
    80
    Palermo
    11
    79
    73
    52
    26
    Roma
    10
    14
    71
    82
    17
    Torino
    35
    41
    64
    02
    29
    Venezia
    17
    45
    18
    71
    13
    Nazionale
    46
    78
    09
    35
    02
    Estrazione Simbolotto
    27
    33
    19
    35
    12

Ultimi Messaggi

Indietro
Alto