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 01 agosto 2026
    Bari
    46
    54
    36
    47
    01
    Cagliari
    77
    30
    04
    79
    18
    Firenze
    84
    76
    10
    27
    44
    Genova
    32
    13
    71
    38
    46
    Milano
    10
    23
    18
    20
    03
    Napoli
    73
    36
    10
    90
    07
    Palermo
    61
    46
    24
    57
    32
    Roma
    89
    78
    23
    07
    35
    Torino
    21
    59
    34
    73
    86
    Venezia
    74
    01
    30
    46
    54
    Nazionale
    71
    65
    17
    09
    20
    Estrazione Simbolotto
    Nazionale
    03
    09
    37
    30
    39

Ultimi Messaggi

Indietro
Alto