Ho ripreso a leggere le istruzioni di spaziometria e mi sono imbattuto in ciclo for nidificato che ho modificato per la composizione dei 10 ambi dai 5 numeri di una estrazione.
Fin qui tutto ok. --- vi inserisco il listato.
Ho quindi ripreso un vecchio listato di Ranco ed inserito lo script precedente per automatizzare la procedura
di ricerca con i 10 ambi di una estrazione.
Sarà che devo oliare gli ingranaggi degli script, (fermi da tempo e quindi un po arrugginiti) ma non riesco a
capire dove sbaglio e perchè la procedura la compie soffermandosi diverse volte in "messaggio di elaborazione"
sul 2° ambo che compone erroneamente con il 1° e 1° numero della estrazione. ( 1° e 1° ...non è un errore)
Poiche l'errore sembra perdurare, stoppo l'elaborazione e con molto piacere vedo in output che ha (di nscosto, non
visibile in video) completato la procedura della composizione degli altri 9 ambi mancanti, anche se i dati sembrano completamente da sistemare ancora
Ecco lo script modificato.
Chi mi può dire dove sbaglio?
Grazie anticipatamente.
Fin qui tutto ok. --- vi inserisco il listato.
Codice:
Sub Main
ReDim aNumeri(5) ' array che conterrà 5 numeri dellaestrazione
Dim k,kk ' contatori per i cicli For che sviluppano gli ambi
Dim sAmbo ' testo ambo da usare per ricerca eda scrivere a video
Dim estrAnalisi,ruoSpia
estrAnalisi = CInt(InputBox("QUALE ESTRAZIONE VUOI ANALIZZARE?","Estrazione in analisi^",EstrazioneFin - 1))
ruoSpia = CInt(InputBox("QUALE RUOTA ANALIZZARE?","Ruota in analisi^",1))
' Componiamo gli ambi dall'estrazione, chiamando aNumeri gli estratti della estrazione in analisi
' blocco di codice che definisce 5 numeri diversi
Scrivi " " & StringaEstratti(estrAnalisi,ruoSpia)
aNumeri(1) = Estratto(estrAnalisi,ruoSpia,1)
aNumeri(2) = Estratto(estrAnalisi,ruoSpia,2)
aNumeri(3) = Estratto(estrAnalisi,ruoSpia,3)
aNumeri(4) = Estratto(estrAnalisi,ruoSpia,4)
aNumeri(5) = Estratto(estrAnalisi,ruoSpia,5)
' blocco di codice che produce gli ambi ottenuti dai 5 numeri contenuti nell'array a numeri , si fa uso di 2 cicli for nidificati
For k = 1 To 4 ' ciclo tra gli elementi 1 e 4
For kk = k + 1 To 5 ' ciclo tra gli elementi k +1 e 5
sAmbo = aNumeri(k) & "." & aNumeri(kk) ' costruisco l'ambo
Call Scrivi (sAmbo) ' lo scrivo a video
Next ' chiusura ciclo for del kk
Next' chiusura ciclo for del k
End Sub
Ho quindi ripreso un vecchio listato di Ranco ed inserito lo script precedente per automatizzare la procedura
di ricerca con i 10 ambi di una estrazione.
Sarà che devo oliare gli ingranaggi degli script, (fermi da tempo e quindi un po arrugginiti) ma non riesco a
capire dove sbaglio e perchè la procedura la compie soffermandosi diverse volte in "messaggio di elaborazione"
sul 2° ambo che compone erroneamente con il 1° e 1° numero della estrazione. ( 1° e 1° ...non è un errore)
Poiche l'errore sembra perdurare, stoppo l'elaborazione e con molto piacere vedo in output che ha (di nscosto, non
visibile in video) completato la procedura della composizione degli altri 9 ambi mancanti, anche se i dati sembrano completamente da sistemare ancora
Ecco lo script modificato.
Codice:
'Ambate e Ambi freq (anche tutte)+ruota scelta Dopo 2 num su ruota scelta
'Ramco 30/01/2008-
Sub Main
Dim ru(2),ru1(10),nt(90,2),nrr(90,2),ambrr(4005,5),nr(2),rt(1)
Dim n(90,2),ambi(4005,5),nn(2),ambi1(4005,5),nn1(2),clp
Dim Colonne(10,2)
Dim aNumeri(5) ' array che conterrà 5 numeri della estrazione
Dim k
Dim kk ' contatori per i cicli For che sviluppano gli ambi
Dim sAmbo ' testo dell'ambo usare per ricerca e da scrivere in output
Dim estrAnalisi,ruoSpia,n1,n2
'
'--------------------------------InputBox DEI DATI Base --------------------
estrAnalisi = CInt(InputBox("QUALE ESTRAZIONE VUOI ANALIZZARE?","Estrazione in analisi^",EstrazioneFin - 1))
ruoSpia = CInt(InputBox("La Ruota scelta ? (Dove son sortite le 2 Spie)","RUOTA",1))
'n1 = CInt(InputBox("QUAL'E' IL PRIMO NUMERO ?","SPIA n° 1^",70))
'n2 = CInt(InputBox("QUAL'E' IL SECONDO NUMERO ?","SPIA n° 2^",22))
rut = ruoSpia '1 ''CInt(InputBox("Che Ruota vuoi Esaminare con i frequenti?","SCELTA RUOTA 1...11",5))
rt(1) = rut
clp = 10''CInt(InputBox("QUANTI COLPI?","COLPI di GIOCO",10))
ru1(1) = 11
'
ini = 8500 'EstrazioneIni 'EstrazioneFin - ee
fin = EstrazioneFin - 1
'
Scrivi " I numeri della estrazione spia sono: " & StringaEstratti(estrAnalisi,ruoSpia) ' elenco i numeri
'
aNumeri(1) = Estratto(estrAnalisi,ruoSpia,1)
aNumeri(2) = Estratto(estrAnalisi,ruoSpia,2)
aNumeri(3) = Estratto(estrAnalisi,ruoSpia,3)
aNumeri(4) = Estratto(estrAnalisi,ruoSpia,4)
aNumeri(5) = Estratto(estrAnalisi,ruoSpia,5)
'codice che produce gli ambi ottenuti dai 5 numeri contenuti nell'array aNumeri , si fa uso di 2 cicli for nidificati
For k = 1 To 4 ' ciclo tra gli elementi aNumeri 1 e 4
For kk = k + 1 To 5 ' ciclo tra gli elementi k +1 e 5
n1 = aNumeri(k) '1° num x ambo ricerca
n2 = aNumeri(kk)'2° num x ambo ricerca
sAmbo = " Ambo in analisi - - - - - - - - - -> " & aNumeri(k) & "." & aNumeri(kk) ' costruisco testo con l'ambo da scrivere
Call Scrivi(sAmbo)' lo scrivo a video
Scrivi EstrazioneFin + 1 & " " & StringaEstratti(EstrazioneFin + 1,ruoSpia)
For cc = 1 To 90
For w = 1 To 2
n(cc,w) = 0
nt(cc,w) = 0
nrr(cc,w) = 0
Next
Next
'ScriviMatrice (n)
co = 0
casi = 0
For es = ini To fin
If ScriptInterrotto Then Exit For
If(Posizione(es,ruoSpia,n1) > 0 And Posizione(es,ruoSpia,n2) > 0)Then
casi = casi + 1
Scrivi DataEstrazione(es) & " " & SiglaRuota(ruoSpia) & " " & StringaEstratti(es,ruoSpia) & " " & n1 & "_" & n2 & " caso " & casi
Messaggio " Spia: " & n1 & "-" & n2 & " Estrazione : " & es & " - " & DataEstrazione(es) & " caso n° " & casi
ess = es + clp
If ess > fin Then ess = fin End If
For x = es + 1 To ess
cc = 0
For pp = 1 To 5
d = Estratto(x,ruoSpia,pp)
e = Estratto(x,rut,pp)
n(d,1) = d
nrr(e,1) = e
n(d,2) = n(d,2) + 1
nrr(e,2) = nrr(e,2) + 1 '<<<
Next
For rr = 1 To 10
For p1 = 1 To 5
g = Estratto(x,rr,p1)
nt(g,1) = g
nt(g,2) = nt(g,2) + 1
Next
Next
Next
co = 0
For x = 1 To 90
For y = x + 1 To 90
co = co + 1
nn(1) = x
nn(2) = y
ru(1) = ruoSpia
ambi(co,1) = co
ambi(co,2) = x
ambi(co,3) = y
yy = SerieFreq(es + 1,ess,nn,ru,2) '''' definito ru(1) = ruotaSpia ruota di ricerca
ambi(co,4) = ambi(co,4) + yy
If yy > 0 Then
ambi(co,5) = ambi(co,5) + 1
Else
ambi(co,5) = ambi(co,5)
End If
nn1(1) = x
nn1(2) = y
ambi1(co,1) = co
ambi1(co,2) = x
ambi1(co,3) = y
xx = SerieFreq(es + 1,ess,nn1,ru1,2) '''' definito ru1(1) = 11 ruota di Tutte
ambi1(co,4) = ambi1(co,4) + xx
If xx > 0 Then
ambi1(co,5) = ambi1(co,5) + 1
Else
ambi1(co,5) = ambi1(co,5)
End If
nr(1) = x
nr(2) = y
ambrr(co,1) = co
ambrr(co,2) = x
ambrr(co,3) = y
kk = SerieFreq(es + 1,ess,nr,rt,2) '''' definito rt = rut'''''11 ruota di Tutte
ambrr(co,4) = ambrr(co,4) + kk
If kk > 0 Then
ambrr(co,5) = ambrr(co,5) + 1
Else
ambrr(co,5) = ambrr(co,5)
End If
Next
Next
End If
Next
Scrivi
Scrivi "Analisi dal " & DataEstrazione(ini) & " al " & DataEstrazione(EstrazioneFin),1
Scrivi
Scrivi "AMBO SPIA " & CInt(n1) & " e " & CInt(n2) & " Su Ruota Unica di " & NomeRuota(ruoSpia) & " N° casi: " & CInt(casi),1
'Scrivi
'Scrivi NomeRuota(ruoSpia),1
Scrivi,1
'Scrivi
Scrivi " Frequenti nei " & clp & " colpi successivi",1
OrdinaMatrice n,- 1,2
OrdinaMatrice ambi,- 1,5 ' matrice ambi su ruota
''ScriviMatrice ambi
OrdinaMatrice ambi1,- 1,5
OrdinaMatrice nt,- 1,2
OrdinaMatrice nrr,- 1,2
OrdinaMatrice ambrr,- 1,5
ColoreTesto 2
Scrivi
Scrivi "Nu.Ruota |Ambi a Ruota|Ambi Tutte| Nu. Tutte "
ColoreTesto 2
Scrivi " N° Fr | Ambo Freq |Ambo Fr | N°.Fr "
ColoreTesto 0
For x = 1 To 10
riga = " " & Format2(n(x,1)) & "..." & Format2(n(x,2)) & " | " & Format2(ambi(x,2)) & "-" & _
Format2(ambi(x,3)) & "..." & Format2(ambi(x,5)) & " | " & _
Format2(ambi1(x,2)) & "-" & Format2(ambi1(x,3)) & "..." & ambi1(x,5) & " | " & Format2(nt(x,1)) & "..." & _
Format2(nt(x,2))
Scrivi riga
riga = ""
Next
' Scrivi String(65,"*")
' ColoreTesto 1
' Scrivi "SELEZIONE 2a RUOTA di verifica " & NomeRuota(rt(1))
' Scrivi "Nu.Ruota | Ambi a Ruota"
' ColoreTesto 2
' Scrivi " N° Fr | Ambo Freq "
' ColoreTesto 0
' For x = 1 To 15
' rige = " " & Format2(nrr(x,1)) & "..." & Format2(nrr(x,2)) & " | " & Format2(ambrr(x,2)) & "-" & _
' Format2(ambrr(x,3)) & "..." & Format2(ambrr(x,5))
' Scrivi rige
' rige = ""
' Next
Scrivi String(45,"*")
Next
Next
End Sub
Chi mi può dire dove sbaglio?
Grazie anticipatamente.
Ultima modifica: