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 28 marzo 2026
    Bari
    53
    04
    01
    11
    09
    Cagliari
    67
    19
    47
    35
    64
    Firenze
    13
    48
    58
    39
    15
    Genova
    52
    87
    51
    79
    67
    Milano
    07
    79
    84
    28
    37
    Napoli
    26
    90
    68
    82
    67
    Palermo
    38
    57
    65
    20
    56
    Roma
    81
    66
    45
    53
    08
    Torino
    29
    47
    55
    78
    71
    Venezia
    07
    29
    76
    14
    15
    Nazionale
    17
    10
    21
    29
    15
    Estrazione Simbolotto
    Firenze
    02
    38
    33
    11
    39
Indietro
Alto