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
    sabato 22 novembre 2025
    Bari
    82
    08
    24
    45
    37
    Cagliari
    07
    16
    67
    74
    35
    Firenze
    76
    32
    44
    06
    51
    Genova
    22
    77
    19
    27
    89
    Milano
    46
    81
    56
    29
    85
    Napoli
    68
    90
    80
    06
    47
    Palermo
    31
    07
    43
    83
    19
    Roma
    08
    68
    17
    12
    57
    Torino
    87
    17
    61
    60
    58
    Venezia
    27
    05
    17
    72
    50
    Nazionale
    70
    76
    56
    81
    15
    Estrazione Simbolotto
    Torino
    26
    34
    10
    42
    33
Indietro
Alto