Novità

Confrontare due righe numeriche e rilevarne i numeri mancanti...

lotto_tom75

Advanced Premium Member
Ovvero...

Se avessi ad esempio due lunghettone...

Una di 75 elementi e l'altra di 74

Come faccio a rilevare, in automatico tramite codice, il numero non presente nella seconda? :unsure:

Esiste una function che ne fa il confronto o qualcosa di simile?

Grazie :)
 
Ciao a Tutti.

Vai in questo link


c'è un mio script dove uso la funzione puntisuarray per confrontare due gruppi di numeri e poi c'è un capolavoro di Joe che riesce a fare il confronto con 2 gruppi di numeri senza la funzione puntisuarray
 
Buona Giornata a tutte/i.

Ho scritto questo che è molto più complicato del necessario perché

deve ricreare la sovrastruttura proposta senza un esempio reale.

In sintesi ... sono sufficienti le ultime '10 righe' dello script.

Codice:
Option Explicit
Sub Main
   Dim Nu(75),K,N,M,F
   ReDim B(90)
 
   'Genera 75 Numeri diversi in "A"
   Do While K < 75
      N = NumeroCasuale(1,90)
      If B(N) = "" Then
         K = K + 1
         Nu(K) = N
         B(N) = N
      End If
   Loop
 
   'Carica la sequenza in "B"
   ReDim B(75)
   For K = 1 To 75
      B(K) = Nu(K)
   Next
 
   'Elenca  i Numeri Ordinati e NON
   Call OrdinaMatrice(B,False)
   Scrivi "A) " & StringaNumeri(Nu)
   Scrivi
   Scrivi "B) " & StringaNumeri(B)
   Scrivi
   'Cancella '1 Numero a Caso' dalla lunghetta 'B'
   N = NumeroCasuale(10,20)
 
   Scrivi "Dalla lunghetta 'B' cancello " & B(N)
   B(N) = 0
   Scrivi
   Scrivi "B) " & StringaNumeri(B)
   Scrivi
 
   'Cerca il Numero Mancante in 'B'
   For N = 1 To 75
      F = False
      For M = 1 To 75
         If Nu(N) = B(M) Then F = True
      Next
      If Not F Then
         Scrivi "Risultato confronto: In 'B' manca " & Nu(N)
      End If
   Next

End Sub

Può essere ed è probabile che ci sia anche una funzione ad hoc.

:)
 
Ciao
Sub main
Redim a1(0),a2(0)
Call getcolonnacasuale(75,a1)
Scrivi stringanumeri(a1)
Call getcolonnacasuale(74,a2,a1)
Call getmancante(a1,a2,s)
Scrivi s
End sub
' quello ch segue si puo fare una sub
sub getMancante(a1,a2,s)
Dim n,n1,bret,s
S=""
For n=1 to ubound(a1)
Bret= true
For n1=1 to ubound(a2)
If a1 (n)=a2(n1) then bret=false
Next
If bret then s=s&a1(n)&" "
Next
End sub

Ciao


Scritto da cell
In pratica dovrebbe mettere in in evidenza i numeri della lunghetto più lunga ch e mancano in quella più corta
Verificate se funziona, non posso fare le verifiche , fatemi sapere ciao
 
Ciao.

Si, naturalmente funziona.

Ho modificato alcune cosette per renderlo più friendly.

La logica della sub è la stessa, tranne che per l'inversione di logica positiva/negativa.

La differenza più grossa è che così si intravvede anche la possibilità di un output

"convenientemente" più corposo ottenuto con uno script più semplice.

Purtroppo, questo output è reso, in formato testo.

Codice:
Sub Main
  ReDim a1(0),a2(0)
  Dim n
  n = 10 'numeri
  Call GetColonnaCasuale(n,a1)
  Scrivi StringaNumeri(a1)
  Call GetColonnaCasuale(n - 1,a2,a1)
  Scrivi StringaNumeri(a2)
  Call getMancante(a1,a2,s)
  Scrivi s
End Sub
Sub getMancante(a1,a2,s)
  Dim x,y,bret
  s = ""
  For x = 1 To UBound(a1)
    bret = True
    For y = 1 To UBound(a2)
      If a1(x) = a2(y) Then bret = False
    Next
    If bret Then s = s & a1(x) & " "
  Next
End Sub

:)
 
Ultima modifica:
In questa nuova versione ho previsto la possibilità

di avere una quantità selezionabile di numeri forzatamente esclusi.

ed anche di avere i valori di essi in un array numerico.

Codice:
Option Explicit
Sub Main
  ReDim a1(0),a2(0)
  Dim n,s,e

  n = 10 'Numeri
  e =  3 'Esclusi

  Call GetColonnaCasuale(n,a1)
  Scrivi StringaNumeri(a1)
  Call GetColonnaCasuale(n - e,a2,a1)
  Scrivi StringaNumeri(a2)
  Call getMancante(a1,a2,s)
  Scrivi StringaNumeri (s)
End Sub
Sub getMancante(a1,a2,s)
  Dim x,y,bret,K
  ReDim s(UBound(a1))
  For x = 1 To UBound(a1)
    bret = True
    For y = 1 To UBound(a2)
      If a1(x) = a2(y) Then bret = False
    Next
    If bret Then K = K+1 : s(K) = a1(x)
  Next
  ReDim Preserve s(K)  
End Sub

:)
 
Ciao a tutti :)
Grazie joe per la verifica e per la conferma.
Buona domenica a tutti :)
Credo che lo script serva a Tom per tenere traccia degli esclusi nella riduzione delle lunghette. .
 
Ciao a tutti :)
Grazie joe per la verifica e per la conferma.
Buona domenica a tutti :)
Credo che lo script serva a Tom per tenere traccia degli esclusi nella riduzione delle lunghette. .

Si i legend mi serve proprio per quello ;)

A proposito...

ho provato a mettere le lunghette come array nello script ma mi da errore... e non riesco a trovarne il motivo... (l'errore mi si presenta sia con il tuo che con quello di joe).

posto il tuo ad es.

Se lascio la versione "colonnacasuale" OK
Se però decommento le righe del code per provare a confrontare due specifiche righe di prova da errore... Deve essere sicuramente una sciocchezza ma al momento non riesco a trovarla... ?


Codice:
Sub Main

ReDim a1(0),a2(0)
Call GetColonnaCasuale(75,a1)

'ReDim a1(4)
'ReDim a2(3)

'a1 = Array (0,1,2,3)
'a2 = Array (0,1,2)

Scrivi StringaNumeri(a1)

Call GetColonnaCasuale(70,a2,a1)

Call getMancante(a1,a2,s)

Scrivi s

End Sub

' quello che segue si puo fare una sub

Sub getMancante(a1,a2,s)
Dim n,n1,bret',s
s = ""
For n = 1 To UBound(a1)
bret = True
For n1 = 1 To UBound(a2)
If a1(n) = a2(n1) Then bret = False
Next
If bret Then s = s & a1(n) & " "
Next
End Sub

[/code+
 
Ciao l errore dipende dalla classe
Getcolonnacasuale( classe, nome dell array, nome dell array di numeri selezionati)
Se metti in un array 5 elementi non si possono sviluppare lunghette da 75
E non serve sviluppare con getcolonnacasuale
Se fai
Remma getcolonnacasuale
Fai a1=array(0,1,2,3,4,6)
A2=array(0,1,3 4,6)
getMancante(a1 ,a2,s)
Dovrebbe funziare:)
 
Ciao l errore dipende dalla classe
Getcolonnacasuale( classe, nome dell array, nome dell array di numeri selezionati)
Se metti in un array 5 elementi non si possono sviluppare lunghette da 75
E non serve sviluppare con getcolonnacasuale
Se fai
Remma getcolonnacasuale
Fai a1=array(0,1,2,3,4,6)
A2=array(0,1,3 4,6)
getMancante(a1 ,a2,s)
Dovrebbe funziare:)

Ciao legend :)
non l'avevo scritto e nel codice non l'avevo riportato ma avevo anche remmato entrambi le call ma anche adesso ho riprovato e mi da sempre errore. Più nello specifico mi scrive "Errore tipo non corrispondente..." e mi evidenzia... questa riga:

a1 = Array (0,1,2,3)

sotto ti riporto anche il codice remmato...

Codice:
Sub Main

'ReDim a1(0),a2(0)
'Call GetColonnaCasuale(75,a1)

ReDim a1(4)
ReDim a2(3)

a1 = Array (0,1,2,3)
a2 = Array (0,1,2)

Scrivi StringaNumeri(a1)

'Call GetColonnaCasuale(70,a2,a1)

Call getMancante(a1,a2,s)

Scrivi s

End Sub

' quello che segue si puo fare una sub

Sub getMancante(a1,a2,s)
Dim n,n1,bret',s
s = ""
For n = 1 To UBound(a1)
bret = True
For n1 = 1 To UBound(a2)
If a1(n) = a2(n1) Then bret = False
Next
If bret Then s = s & a1(n) & " "
Next
End Sub

Ciao :)
 
Ciao nel primo messaggio hai scritto lunghettone di 75 numeri.

Chiaro che se è una stringa di 150/200 caratteri,

devi anche fornire le specifiche sul come interpretarla.

Diversamente gli elementi indistinti di essa non

possono essere confrontati uno ad uno con quelli

di un altra lunghetta che sia una stringa di 147/197 caratteri.

Brevemente se sono da splittare devi splittarle.

Poi se erano stringhe sono state splittate

Rimangono piccole stringhe dunque

confronti stringhe con stringhe.

E come risultato generi una stringaa cui aggiungono

una ad una le strighette.

Altrimenti se sono numeri li devi raccogliere come elementi iesimi di un array ottenuti dal confronto di

Numero con Numero.

:)
 
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