Novità

Come realizzare questo script di "collimazione" ?

lotto_tom75

Premium Member
Messaggi
7.795
Punti reazione
78
Punti
48
Ho un file txt di studio con una serie di formazioni dinamiche sempre diverse come quelle di esempio sottostanti

Es. fittizio di sole 5 righe : fileA.txt

-30-40-55-57-58-60-61-62-63-66-67-68-69-70-71-73-74-75-26-78
-30-42-55-57-58-60-61-62-63-66-67-68-69-70-71-73-76-90-28-88
-30-50-55-57-58-60-61-62-63-66-67-68-69-70-71-73-77-2-11-89
-30-52-55-57-58-60-61-62-63-66-67-68-69-70-71-73-72-5-2-78
-30-53-55-57-58-60-61-62-63-66-67-68-69-70-71-73-74-18-4-78

Vorrei provare con uno script ad analizzare riga per riga e a scrivere in un altro file txt solo i numeri presenti in tutte le righe risultanti.

Sempre secondo l'esempio dovrei avere in fileB.txt solo questi numeri:

30-55-57-58-60-61-62-63-66-67-68-69-70-71-73

perchè appunto presenti in tutte e cinque le righe soprastanti di esempio.

In sostanza tecnicamente dovrei:

1) leggere il file (so come farlo) :)
2) mettere ciascuna riga splitatta in un relativo array (so come farlo) :)
3) confrontare ogni array relativo ad ogni riga (non so come farlo) 🙄
4) trovare gli elementi uguali ad ogni riga-array (non so come farlo) 😑
5) scrivere il file2.txt con il contenuto del punto 4 (so come farlo) 🙂

Grazie 1️⃣0️⃣0️⃣0️⃣ a chi mi da una 🤚 per i punti 3 e 4 :unsure:☺

Ps: l'ho già detto vero che questo forum, specialmente nella sua ultimissima versione, lo trovo strafigo??? 👍👍👍👍👍👏👏👏👏👏 🤩😀
 

Beppignello

Advanced Member >PLATINUM PLUS<
Messaggi
2.288
Punti reazione
140
Punti
63
Io userei una arrays sola. Numeri(90,2)
Dove nell elemto 1 accumulo la presenza nelle lunghette
E nell elemento due ci metto il nr


Alla fine della lettura delle righe del file
Ordino. la arrays per presenze discendenti
In modo di avere la possibilita' di vederli
Se i nr che hanno presenti uguali o di poco minori delle righe lette

In altre parole se leggo quattro righe di combinazioni
Devo rintracciare i numeri che avranno 4 presenze.
 

lotto_tom75

Premium Member
Messaggi
7.795
Punti reazione
78
Punti
48
Grazie bepp per la velocissima risposta e dritta 😲😀

Il concetto di come opereresti tu l'ho capito e lo trovo superbo 👍👌

Purtroppo non ho ben chiaro però come costruire l'arrays bidimensionale (so comporlo solo uno con i valori singoli 😔) nè come poterlo ordinare per le presenze discendenti, nè come scegliere il numero avente le presenze pari al numero di righe. Per avere il numero di righe presenti nel file in modo da poter confrontare poi i valori dei singoli elementi del array bi-dimensionale credo che basti un count nel relativo for ma per estrapolare l'elemento corrispondente dall'array dimensionale non ho idea di come fare. C'è scritto qualcosa nella guida di spazio che tu sappia? Non riesco a trovare funzioni o argomenti al riguardo... :rolleyes:

Thanks! 🙂
 
Ultima modifica:

lotto_tom75

Premium Member
Messaggi
7.795
Punti reazione
78
Punti
48
Forse mi serve questo code... Ordina Matrice opportunatamente modificato...?

Codice:
Sub Main
   ReDim a(5,5)
   a(1,1) = 1
   a(2,1) = 4
   a(3,1) = 3
   a(4,1) = 2
   a(5,1) = 5
   a(1,2) = 0.01
   a(2,2) = 0.2
   a(3,2) = 0.02
   a(4,2) = 0.5
   a(5,2) = 0.8
   Call Scrivi("Ordinamento su colonna 1")
   Call OrdinaMatrice(a,- 1,1)
   For k = 1 To 5
      Call Scrivi(CStr(a(k,1)))
   Next
   Call Scrivi("Ordinamento su colonna 2")
   Call OrdinaMatrice(a,- 1,2)
   For k = 1 To 5
      Call Scrivi(CStr(a(k,2)))
   Next
   Call Scrivi("Ordinamento su vettore")
   ReDim a(5)
   a(1) = 2
   a(2) = 5
   a(3) = 3
   a(4) = 1
   a(5) = 4
   Call OrdinaMatrice(a,1)
   For k = 1 To 5
      Call Scrivi(CStr(a(k)))
   Next

   Scrivi "============================="
   ' -----------------------------------------
   ReDim a(5,5)
   a(1,1) = 1
   a(2,1) = 4
   a(3,1) = 3
   a(4,1) = 2
   a(5,1) = 5
   a(1,2) = 0.01
   a(2,2) = 0.2
   a(3,2) = 0.02
   a(4,2) = 0.5
   a(5,2) = 0.8
   Call Scrivi("Ordinamento Turbo su colonna 1")
   Call OrdinaMatriceTurbo(a,- 1,1)
   For k = 1 To 5
      Call Scrivi(CStr(a(k,1)))
   Next
   Call Scrivi("Ordinamento Turbo su colonna 2")
   Call OrdinaMatriceTurbo(a,- 1,2)
   For k = 1 To 5
      Call Scrivi(CStr(a(k,2)))
   Next
   Call Scrivi("Ordinamento Turbo su vettore")
   ReDim a(5)
   a(1) = 2
   a(2) = 5
   a(3) = 3
   a(4) = 1
   a(5) = 4
   Call OrdinaMatriceTurbo(a,1)
   For k = 1 To 5
      Call Scrivi(CStr(a(k)))
   Next
End Sub
Se si... come faccio ad inserire in a(90,2) i 2 valori di ciascuna riga letta dal file txt? o_O
Ovvero come faccio ad inserire nel primo spazio della matrice il numero e nel secondo il suo valore di presenza per ogni riga? 🤔

Io saprei inserire un solo valore con il seguente code:

Codice:
Call SplitByChar("-" & aRighe(k),"-",a)
Ma così mi inserisce nell'array (o matrice) monodimensionale solo i numeri della riga senza il rispettivo valore di presenza... 😕

Codice:
Option Explicit
Sub Main

'TEST x estrapolazione valori collimanti

Dim sfile,k,k2
sfile = ".\testxvaloricollimanti.txt"

If FileEsistente(sfile) Then

Call Messaggio("Lettura file di testo")
ReDim aRighe(0)
Call LeggiRigheFileDiTesto(sfile,aRighe)
For k = 0 To UBound(aRighe)
If aRighe(k) <> "" Then

ReDim aN(0)

'Call SplitByChar("." & aRighe(k),".",aNum)
Call SplitByChar("-" & aRighe(k),"-",aN)



'verifica lettura file
For k2=0 To UBound(aN)
Scrivi "aN"&k2& " : " & aN(k2)
Next

End If
Next
End If


End Sub
 
Ultima modifica:

Beppignello

Advanced Member >PLATINUM PLUS<
Messaggi
2.288
Punti reazione
140
Punti
63
Esempio
Dom numeri (90,2)

Nr e' il singolo numero della lunghett che stai leggendo

Numeri (nr,1) = numeri (nr,1) + 1 ''' contatore presenze
Numeri (nr,2) = nr


Alla fine del loop delle combinazioni lette dal file
Call ordinamatrice(numeri,-1,1) ''' ordinO la matrice per elemento 1 che e' il contatore presenze in forma discendente -1

A questo punto fai for..next dei 90 numeri possibili, ottiene l elenco
Decrescente che puoi stampare oppure puoi raggruppare in un campo
E scriverlo su altro file.tot

Lo zero e" solo come limite inferiore che tu stabilisci
Se vuoi solo i numeri chefigurano nelle Lunghette minimo 2 o 3 o 4 volte
lo stabilisce tu dopo aver visto l elenco la prima volta.
Modificando lo zero in 2 o 3 o 4 o x che vuoi


For x = 1 to 90
If numeri(x,1) >= 0 the
scrivi numeri(x,2) & " pres. " & numeri(x,1)
End if
Next
 

lotto_tom75

Premium Member
Messaggi
7.795
Punti reazione
78
Punti
48
Ho provato... 😝
Ma in output ho solo uno sconsolante " pres. " kilometrico... 😖 🤣



Codice:
Option Explicit
Sub Main

'TEST2 x estrapolazione valori collimanti

Dim sfile,k,k2,x
sfile = ".\testxvaloricollimanti.txt"


Dim numeri(90,2)

Dim nr

numeri (nr,1) = numeri (nr,1) + 1 ''' contatore presenze
numeri (nr,2) = nr

If FileEsistente(sfile) Then

Call Messaggio("Lettura file di testo")
ReDim aRighe(0)
Call LeggiRigheFileDiTesto(sfile,aRighe)
For k = 0 To UBound(aRighe)
If aRighe(k) <> "" Then


Call SplitByChar("-" & aRighe(k),"-",nr)


'verifica lettura file
'For k2=0 To UBound(nr)
'Scrivi "nr"&k2& " : " & nr(k2)
'Next


'End If
'Next
'End If

Call OrdinaMatrice(numeri,-1,1)

For x = 1 To 90
If numeri(x,1) >= 0 Then
Scrivi numeri(x,2) & " pres. " & numeri(x,1)
End If
Next

End If
Next
End If


End Sub



Where I wrong? 🥴🙄🤔
 

Beppignello

Advanced Member >PLATINUM PLUS<
Messaggi
2.288
Punti reazione
140
Punti
63
ho tolto sul file contenente le tue 5 combinazioni il (- leggasi trattino) iniziale prima dei numeri, quello di sinistra

ho fatto girare lo script

Codice:
Option Explicit
Sub Main
   'TEST2 x estrapolazione valori collimanti
   Dim sfile,k,k2,x
   sfile = "c:\temp\testxvaloricollimanti.txt"
   Dim numeri(90,2)
   ReDim nr(90)
   If FileEsistente(sfile) Then
      Call Messaggio("Lettura file di testo")
      ReDim aRighe(0)
      Call LeggiRigheFileDiTesto(sfile,aRighe)
      For k = 0 To UBound(aRighe)
         If aRighe(k) <> "" Then
            Call SplitByChar(aRighe(k),"-",nr)
            'verifica lettura file
            For k2 = 0 To UBound(nr)
               numeri(nr(k2),1) = numeri(nr(k2),1) + 1 ''' contatore presenze
               numeri(nr(k2),2) = nr(k2)
            Next
            '
         End If
      Next
      Call OrdinaMatrice(numeri,- 1,1)
      '
      ColoreTesto(2)
      Scrivi StringaNumeri(nr,"."),1
      ColoreTesto(0)
      For x = 1 To 90
         If numeri(x,1) > 0 Then
            Scrivi format2(numeri(x,2)) & " pres. " & numeri(x,1)
         End If
      Next
   End If
End Sub
il tuo risultato:
30-55-57-58-60-61-62-63-66-67-68-69-70-71-73


ed ho ottenuto questo output, dopo la lettura di queste 5 righe:

-30-40-55-57-58-60-61-62-63-66-67-68-69-70-71-73-74-75-26-78
-30-42-55-57-58-60-61-62-63-66-67-68-69-70-71-73-76-90-28-88
-30-50-55-57-58-60-61-62-63-66-67-68-69-70-71-73-77-2-11-89
-30-52-55-57-58-60-61-62-63-66-67-68-69-70-71-73-72-5-2-78
-30-53-55-57-58-60-61-62-63-66-67-68-69-70-71-73-74-18-4-78

67 pres. 5
68 pres. 5
66 pres. 5
62 pres. 5
63 pres. 5
73 pres. 5
71 pres. 5
70 pres. 5
30 pres. 5
69 pres. 5
61 pres. 5
58 pres. 5
57 pres. 5
60 pres. 5

55 pres. 5
78 pres. 3
02 pres. 2
74 pres. 2
26 pres. 1
50 pres. 1
52 pres. 1
42 pres. 1
40 pres. 1
28 pres. 1
53 pres. 1
04 pres. 1
89 pres. 1
05 pres. 1
11 pres. 1
88 pres. 1
90 pres. 1
76 pres. 1
75 pres. 1
72 pres. 1
18 pres. 1
77 pres. 1
 
Ultima modifica:

Beppignello

Advanced Member >PLATINUM PLUS<
Messaggi
2.288
Punti reazione
140
Punti
63
a questo punto puoi metterli in un record e scriverli in un nuovo file se ti serve per fare altre cose.
 

lotto_tom75

Premium Member
Messaggi
7.795
Punti reazione
78
Punti
48
:eek: Grazie mille carissimo ma io facendolo girare, dopo aver modificato il file txt come da te consigliato, ottengo questo erroraccio... o_O 😩😒 Sarà l'emozione... 😁

graziemillema.jpg

Ho semplicemente fatto copia e incolla dal tuo ultimo script aggiornato qui sopra e modificato il txt rimuovendo la lineetta iniziale (-). Tutto qui 😑
 
Ultima modifica:

Beppignello

Advanced Member >PLATINUM PLUS<
Messaggi
2.288
Punti reazione
140
Punti
63
non so, ma non è che nel file hai un record in piu' ma a blanks o vuoto?
 

lotto_tom75

Premium Member
Messaggi
7.795
Punti reazione
78
Punti
48
non so, ma non è che nel file hai un record in piu' ma a blanks o vuoto?
MI CORREGGO rimuovendo anche l'ultimo trattino in ciascuna riga del txt funziona tutto alla grandissimaaa GRAZIEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE mitico bepp! 💪👌👍 ;):cool:



Se hai bisogno di qualsiasi tipo di analisi statistica e sono in grado di aiutarti fai un fischio. Io sono qui 😜😎
 

Alien.

Advanced Premium Member
Messaggi
20.082
Punti reazione
99
Punti
48
Toc.Toc permesso ! ma lo script è un fantasma mi resta il foglio tutto bianco come mai ?
 

Beppignello

Advanced Member >PLATINUM PLUS<
Messaggi
2.288
Punti reazione
140
Punti
63
ciao Alien
1) il file è questo ?
sfile = "c:\temp\testxvaloricollimanti.txt"

2) il percorso è lo stesso?

3) Call SplitByChar(aRighe(k),"-",nr)

i numeri sono divisi tra loro da un trattino?

4) non ci sono trattini o altri separatori, all'inizio o alla fine di ogni riga ed in fondo al file?

i motivi possono essere tra questi elencati.

prova a controllare il tutto
 

lotto_tom75

Premium Member
Messaggi
7.795
Punti reazione
78
Punti
48
E' come dice Beppignello Alien ;)

In + posso dirti che se metti al posto di questo code
Codice:
 sfile = "c:\temp\testxvaloricollimanti.txt"

questo...


Codice:
file = ".\temp\testxvaloricollimanti.txt"
Peschi il file txt direttamente dalla directory dove risiede lo stesso script.

Ciao ad entrambi :)
 

Ultima estrazione Lotto

  • Estrazione del lotto
    giovedì 14 novembre 2019
    Bari
    77
    46
    84
    05
    89
    Cagliari
    07
    50
    46
    16
    49
    Firenze
    44
    09
    22
    54
    61
    Genova
    72
    84
    49
    57
    63
    Milano
    76
    22
    69
    65
    71
    Napoli
    70
    80
    67
    21
    50
    Palermo
    83
    79
    66
    13
    38
    Roma
    62
    41
    64
    83
    47
    Torino
    61
    31
    85
    84
    02
    Venezia
    37
    22
    68
    90
    56
    Nazionale
    83
    82
    69
    30
    70

Ultimi Messaggi

Alto