Novità

Somma Estratti

Ciao, Scusa ma dovevo recuperare il file che avevo salvato, lo avevo chiamato "pasticcio Test" e non mi lo ricordavo

Sicuramente devo meglio comprendere il ciclo for... next e stare attento a come li metto e cosa ci metto prima e dopo a volte va benissimo ma in questo caso penso che il più brutto errore che ho fatto e voler usare quanto esposto da Joe senza seguire le regole basi e quindi for next confusi e pasticciati.

Avete Ragione Tu, Claudio, Joe e Salvo seguire e fare tutto sempre ex novo... sbagliando si migliora almeno spero...


Codice:
Option Explicit
Sub Main
  'Metodo Test Somma / Pari / Dispari / Totale Degli Estratti
   Dim R,P,E,Somma_Pari,Somma_Disp
   Dim Fin,Clp,Ini,Es,Caso,Casi
   Dim A,B,C,Amba1,Amba2
   Dim MAmba1,PAmba1,MAmba2,PAmba2
   Dim Ambo1(2)
   Dim Ru(1),Posta(2),Poste(2)
   Posta(1) = 1
   Posta(2) = 1
   Poste(2) = 1
   Fin = EstrazioneFin
   Ini = InputBox("Inserisci l'estrazione che vuoi iniziare",,9750)
   Clp = CInt(InputBox("Per quanti colpi vuoi fare la ricerca?",,8))
   Call ScegliRange(Ini,Fin,Ini,Fin)
   Scrivi Space(25) & " Script Test ",1
   Scrivi
   For Es = Ini To Fin
      Messaggio Es
      AvanzamentoElab Ini,Fin,Es
      Somma_Pari = Fuori90(Somma_Pari + E)
      Somma_Disp = Fuori90(Somma_Disp + E)
      For R = 1 To 12 : If R = 11 Then R = 12
      For P = 1 To 5
      E = Estratto(Es,R,P)
      If pari(E) Then
      Else
      End If
      Next
      Next
            Caso = Caso + 1
            Casi = Casi + 1
            Scrivi String(80,"*") & " Estrazione " &(Es) & " caso " & FormattaStringa(Caso,"0000"),,,,2
            ColoreTesto 0 : Scrivi SiglaRuota(R) & Space(1),True,False
      A = Somma_Pari
      B = Somma_Disp
      C = A + B
      Amba1 = Fuori90(A)
      Amba2 = ComplAdX(Amba1)
            Scrivi("Estrazione n " & Format2(Es) & " del " & DataEstrazione(Es)),1,0
            Scrivi ""
            ColoreTesto 2 : Scrivi "   Somma Pari " & Somma_Pari
            ColoreTesto 1 : Scrivi "   Somma Disp " & Somma_Disp
            ColoreTesto 0 : Scrivi "   - TOTALE - " & Fuori90(Somma_Pari + Somma_Disp)
            Scrivi
            Scrivi "   " &(Amba1) & " Prima Ambata",1,0,,2
            Scrivi "  -  Complemento a 90 = " & Format2(Amba2) & " Seconda Ambata",1,,,2
            Scrivi
            Scrivi Space(10) & Format2(Amba1) & " " & Format2(Amba2) & "    Ambate e Ambo"
            Ru(1) = 1
            Ambo1(1) = Amba1 : Ambo1(2) = Amba2
            ImpostaGiocata 1,Ambo1,Ru,Posta,Clp
            Gioca Es
         Next
   ScriviResoconto
End Sub

Non badare al momento alle indentazioni ci ho lavorato molto ma in questo momento sono in confusione...
 
Allora subito dopo il ciclo estrazioni devi azzerare le somme , subito prima del ciclo ruote .prova
ciao
ti posto lo script
fatto velocemente e sono stanco per che oggi non ho chiuso occhio , pertanto controlla che i risultati siano esatti
per favore, potrei aver scritto qualche cavolata anche io
guarda dove ho azzerato le somme .
e dove invece vanno calcolate
eccoti lo script
Codice:
Option Explicit
'Controllare che lo script dia risultati esatti , no se ne garantisce la correttezza
Sub Main
   Dim idEstr,R,p,E
   Dim Ini,Fin
   Dim k,m,nSomPar,nSomDisp
   Dim aColor(2)
   aColor(1) = RGB(99,135,231)
   aColor(2) = RGB(236,113,223)
   Ini = EstrazioneFin - 4
   Fin = EstrazioneFin
   For idEstr = Ini To Fin
      Scrivi FormatSpace(GetInfoEstrazione(idEstr),32),1,,RGB(105,105,105),vbWhite
      ReDim aPari(0)
      ReDim aDisp(0)
      ' azzero tutte le variabili contatore
      m = 0
      k = 0
      nSomPar = 0
      nSomDisp = 0
      For R = 1 To 11
         If R = 11 Then R = 12
         Scrivi FormatSpace(NomeRuota(R),10) & "  ",,0,RGB(238,235,243)
         For p = 1 To 5
            E = Estratto(idEstr,R,p)
            If pari(E) Then
               k = k + 1
               ReDim Preserve aPari(k)
               aPari(k) = E
               nSomPar = nSomPar + E
               Scrivi " " & Format2(E) & " ",1,0,aColor(1)
            Else
               m = m + 1
               ReDim Preserve aDisp(m)
               aDisp(m) = E
               nSomDisp = nSomDisp + E
               Scrivi " " & Format2(E) & " ",1,0,aColor(2)
            End If
         Next
         Scrivi
      Next
      Scrivi String(194,"-")
      Call OrdinaMatriceTurbo(aPari,1)
      Scrivi " Numeri Pari raccolti:            " & StringaNumeri(aPari,,True)
      Scrivi " Somma numeri Pari:               " & nSomPar
      Scrivi " Somma numeri Pari fuori 90:      " & Fuori90(nSomPar)
      Scrivi String(194,"-")
      Call OrdinaMatriceTurbo(aDisp,1)
      Scrivi " Numeri dispari raccolti:         " & StringaNumeri(aDisp,,True)
      Scrivi " Somma numeri Dispari:            " & nSomDisp
      Scrivi " Somma numeri Dispari fuori 90:   " & Fuori90(nSomDisp)
      Scrivi String(194,"-")
   Next
End Sub
Ciao :)
il discorso delle poste e delle giocate riesci a gestirlo da te ;)
 
ovviamente vengono conteggiati anche i numeri ripetuti che non ho eliminato cosi li visualizzi tutti
ai fini del calcolo non sono importanti perche la somma è un calcolo a se
se vuoi visualizzare i numeri senza ripetizioni , utilizza la funzione elimina ripetuti
studiala dall help o dai test , è facile ;)
ciao ;)
ora devo andatre a nannabuona notte a tutti
 
Certo, ma non potrei mai fare delle osservazioni negative su di Te, potrai anche sbagliare... forse ma hai i mezzi per gestire il tutto, quello che non ho Io..

Intanto Grazie come sempre.
 
Certo, ma non potrei mai fare delle osservazioni negative su di Te, potrai anche sbagliare... forse ma hai i mezzi per gestire il tutto, quello che non ho Io..

Intanto Grazie come sempre.
non c 'e' di che
:ROFLMAO: :ROFLMAO: :ROFLMAO: :ROFLMAO: :ROFLMAO: :ROFLMAO: :ROFLMAO: :ROFLMAO: :ROFLMAO: :ROFLMAO: :ROFLMAO: se sbaglio e me lo fai notare , mi fai un favore, certamente non ci resterei male :ROFLMAO::ROFLMAO::ROFLMAO::ROFLMAO::ROFLMAO::ROFLMAO::ROFLMAO:
notte ;)
 
Invece, io ti dico ...

... non guardare allo script, ma prova a seguire,

una proposta, di soluzione alternativa.

Hai uno schema del tipo:

Ad una estrazione ... si calcola la somma ... la si gioca.

Lo script che avevo fatto è evidentemente la parte centrale.

Quella che in funzione di un numero di estrazione ... calcola la somma.

Quindi se considerassi essere tutto quello script una

Function Calcola_Somma_ Estratti_Pari (Es,Risultato)
...
End Function

Avresti una funzione "ad hoc" per provare il tuo metodo.

Dandogli una Estrazione "Es" (in funzione di questo numero di Estrazione)

ti restituisce, il "Risultato".

Cioè il valore della somma dei numeri pari.

Lo script principale (Main) per far richiamare la funzionare sarebbe di 3/4 linee

nella prima parte è il loop che hai già scritto:

For Es = Ini to Fin
If Es = .... Prima / Ultima / Pari / .... / = 1000 / ecc. ecc. Then
Call Function

... ed un paio di righe per il calcolo del pronostico e la simulazione.
cioè la terza parte dello schema che ti ho proposto

N(1) = Risultato : N(2) = Vert (Risultato)
Gioca Es
End if
Next
End Sub

Function Calcola_Somma_ Estratti_Pari (Es,Risultato)
...
End function
 
Joe traslare la parte centrale dello script in una function non accorcia né le righe né i calcoli , a mio avviso.
Se deve fare solo la somma bast eliminare superflua dell output che ho scritto giusto per poter verificare se lo script da risultati esatti oppure no.
Ma questo è solo il mio parere .
Ciao. :)
 
Buona Serata a Tutti Voi
Grazie anche per l'intervento di Joe, sempre Buoni Spunti.

Per Quanto Riguarda lo script Visto ed analizzato nella sostanza non ancora approfondito perchè devo capire alcune cose come il ReDim(0) e poi proprio non potevo arrivarci sul discorzo dell'azzeramento, ma è un passo in più con nuovi ostacoli e nuove funzioni da assimilare.

Grazie I-Legend, ho integrato il tuo alle parti mancanti per verifiche di alcuni risultati ed è tutto perfettamente funzionante, ora devo ben capire dove sbagliavo confrontando il mio "pasticcio con il Tuo listato.

Grazie.
 
Ciao I-Legend,

è un parere giusto e ben accetto.

"La parte centrale" anche ed eventualmente ripulita dell' inutile,

ha già, in sé stessa, gli azzeramenti necessari.

Inoltre la mia proposta era per indirizzare con un esempio molto semplice,

già studiato, assimilato e noto,

ad una maggiore "strutturazione" dello script.

Riguardo la velocità, penso tu abbia ed hai ragione.

La si aumenta solo eliminando le pesanti istruzioni che avevo previsto

per conferire all' output un accattivante e colorata distinzione.

Fronzoli inutili, per testare un metodo.

Ma va anche detto che, il testare un metodo, non era nella richiesta iniziale,

Nel esempio che segue e per come l'avevo ipotizzato

si vede chiaramente che gli azzeramenti necessari,

erano già scritti ("scritti" tra parentesi) nelle Dim dello script iniziale.

Il fatto che il valore non aumenti di mese in mese ... è garanzia di azzeramento.

Codice:
Option Explicit
Sub Main
   Dim Es
   For Es = EstrazioneFin - 155 To EstrazioneFin
      If IsUltimaDelMese(Es) Then
         Scrivi DataEstrazione(Es) & Space(1),True,False
         Scrivi Calcola_Somma_Estratti_Pari(Es)
      End If
   Next
End Sub
Function Calcola_Somma_Estratti_Pari(Es)
   'Somma / Pari / Dispari / Totale
   'Script By Joe V.3.0
   Dim R,P,E,Somma_Pari',Somma_Disp
   'Scrivi DataEstrazione(Es),True
   'Scrivi ""
   For R = 1 To 12 : If R = 11 Then R = 12
      'ColoreTesto 0 : Scrivi SiglaRuota(R) & Space(1),True,False
      For P = 1 To 5
         E = Estratto(Es,R,P)
         If pari(E) Then
            Somma_Pari = Somma_Pari + E
            'ColoreTesto 2
            'Else
            ' Somma_Disp = Somma_Disp + E
            'ColoreTesto 1
         End If
         'Scrivi Format2(E) & Space(1),False,False
      Next
      'Scrivi
   Next
   'Scrivi
   'ColoreTesto 2 : Scrivi " Somma Pari " & Somma_Pari
   'ColoreTesto 1 : Scrivi " Somma Disp " & Somma_Disp
   'ColoreTesto 0 : Scrivi " - TOTALE - " & Somma_Pari + Somma_Disp
   Calcola_Somma_Estratti_Pari = Somma_Pari
End Function

:) Buona serata a tutte.
 
Ultima modifica:
Ciao Joe,
Grazie anche per questo, Ieri stavo provando quanto scritto da Te, anche per abituarmi a certe contesti al di là di calcolo o metodi futuri, qualche errore sulla function, devo anche capire come chiamarla e dove sistemarla ed infine se devo chiudere con la function il listato o altro e terminare con End Sub.

Grazie.
 
Ciao, Xeroxs

con la premessa che non ho studi, non sono un esperto,

e quel che so è per averlo dedotto come autodidatta ....

Direi che la funzione (Function) è la versione minima, mentre la SubRoutine

è la versione "in grande" cioè più completa.

La Main è la più grande in assoluto. Cioè la regina delle Sub.

Sub Main termina con End Sub

Sub Tizio (...) si chiude con End Sub

Function Caio (...) si termina con End Function.

La Function in genere restituisce "un risultato unico" (di calcoli)

che coincide ed è il nome stesso della funzione.

Nella Sub si possono ottenere più risultati contemporaneamente.

Nel Lotto valori come "Frequenza" e "Ritardo"

potrebbero considerarsi risulti in Funzione (cioè relative) a dei parametri.

"Coppie / Terzine / Formazioni" di numeri ... possono invece essere ricavati da una Sub.

Uso come esempio quello di una funzione per il calcolo dell' "Area del Triangolo = Base x Altezza / 2"

Codice:
Option Explicit
Sub Main()
  Dim Cateto_Base,Altezza
  Base = 5
  Altezza = 10
  Scrivi Area_del_Triangolo(Cateto_Base,Altezza)
End Sub
Function Area_del_Triangolo(Cateto_Base,Altezza)
  Area_del_Triangolo = Cateto_Base * Altezza / 2
End Function


E' un esempio semplice al punto di essere banale e quasi utile solo ad indicare

come scomporre il problema del calcolo tra Sub e Function.

In esso, però diventa molto semplice leggere e capire come funziona e cosa fa lo script.

L'indentazione ... viene gestita molto bene dall'editor di Spaziometria.

Con il pulsante che si trova al centro / in alto / alla sinistra finestrella

ove sono suggerite le istruzioni come ad esempio ".bChiusura".

Quello con un "più verde e due strisce blu" che viene descritto come "auto formattazione codice"

:)
 
Buongiorno a tutti,
senza entrare in "dissenso" con le definizioni date da Joe, ma avendo un' infarinatura di diversi linguaggi, di solito la function viene usata nella ripetitivita' delle operazioni.
Per tornare all' esempio di Joe, lo stesso risulta "vero" se in un programma di calcolo area di diversi poligoni, invece di riscrivere la formula, ogni volta che mi viene richiesta l'area del triangolo, richiamo la function.
;)
 
Grazie ancora Joe,
Al rientro proverò ancora ad incastrare quanto appreso anche ripeto per provare cose nuove
 
Ringrazio Druid che, ha sicuramente ragione, per questa sua delucidazione.

Quanto ho scritto sono distinzioni, suddivisioni e classificazioni, poco ortodosse,

Solo "pratiche".

Le funzioni non presenti erano:

Somma dei Numeri Pari (Estrazione) e nell'ultimo esempio, Area del Triangolo (Cateto, Altezza).

Per quanto riguarda la somma degli estratti pari,

questa funzione "ad hoc" è scritta cioè creata ... una volta ... ma

viene eseguita ... tutte le volte ... che il programma principale (la Sub Main) la richiede.

Dunque per tornare all'esempio fatto, viene eseguita 12 volte l'anno.

Una volta, per ogni ultima estrazione del mese.

:)
 
Ultima modifica:

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 14 gennaio 2025
    Bari
    41
    25
    12
    73
    55
    Cagliari
    54
    20
    48
    32
    67
    Firenze
    75
    23
    68
    10
    38
    Genova
    33
    27
    81
    70
    64
    Milano
    68
    01
    64
    86
    87
    Napoli
    47
    75
    45
    10
    21
    Palermo
    55
    86
    33
    53
    70
    Roma
    88
    78
    61
    06
    07
    Torino
    76
    08
    23
    61
    82
    Venezia
    25
    15
    49
    21
    81
    Nazionale
    70
    10
    32
    78
    07
    Estrazione Simbolotto
    Bari
    07
    14
    28
    45
    31
Indietro
Alto