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
 

joe

Advanced Member >PLATINUM PLUS<
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:

Delphi

Advanced Member
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
 

genios

Advanced Member >PLATINUM<
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 🙂
 

BaffoBlù

Advanced Member >PLATINUM<
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....
 

genios

Advanced Member >PLATINUM<
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 .
 

Delphi

Advanced Member
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:

genios

Advanced Member >PLATINUM<
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
 

Delphi

Advanced Member
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
 

Delphi

Advanced Member
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
 

joe

Advanced Member >PLATINUM PLUS<
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

:)
 

BaffoBlù

Advanced Member >PLATINUM<
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...


 

joe

Advanced Member >PLATINUM PLUS<
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

:)
 

joe

Advanced Member >PLATINUM PLUS<
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 27 luglio 2024
    Bari
    68
    18
    05
    80
    90
    Cagliari
    68
    80
    63
    13
    55
    Firenze
    57
    10
    34
    04
    02
    Genova
    17
    08
    51
    71
    76
    Milano
    73
    68
    62
    47
    53
    Napoli
    32
    76
    19
    08
    44
    Palermo
    71
    26
    48
    56
    12
    Roma
    16
    68
    12
    32
    88
    Torino
    19
    66
    61
    60
    52
    Venezia
    59
    39
    14
    42
    53
    Nazionale
    30
    41
    80
    50
    83
    Estrazione Simbolotto
    Nazionale
    02
    44
    22
    20
    30

Ultimi Messaggi

Alto