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
    martedì 03 giugno 2025
    Bari
    22
    06
    19
    70
    35
    Cagliari
    63
    52
    04
    64
    43
    Firenze
    77
    56
    88
    38
    21
    Genova
    40
    86
    56
    32
    74
    Milano
    36
    42
    01
    33
    67
    Napoli
    63
    06
    37
    46
    64
    Palermo
    85
    66
    17
    42
    41
    Roma
    49
    88
    03
    80
    57
    Torino
    38
    42
    43
    53
    69
    Venezia
    50
    16
    55
    31
    32
    Nazionale
    28
    11
    73
    72
    52
    Estrazione Simbolotto
    Napoli
    13
    22
    38
    33
    41
Indietro
Alto