Novità

Per tutti gli scriptisti

Scusatemi se continuo a disturbarvi, a grandi linee ho capito come funziona, infatti ho sostituito
i numeri che avevi messo tu con quelli che interessano a me, ho capito che i 5 numeri li prende
uno alla volta e li mette nella stessa variabile, però a me serve che i 5 numeri presi deve metterli
in 5 variabili diverse. Grazie


Option Explicit
Sub Main

Dim nUsati , i
Dim aFlagUsati (10)
ReDim aNumeri (10)

aNumeri(1) = 9
aNumeri(2) = 18
aNumeri(3) = 27
aNumeri(4) = 36
aNumeri(5) = 45
aNumeri(6) = 54
aNumeri(7) = 63
aNumeri(8) = 72
aNumeri(9) = 81
aNumeri(10) = 90


Do While nUsati < 5
i = NumeroCasuale( 1 , 10)
If aFlagUsati (i) = False Then
aFlagUsati (i) = True
Call Scrivi (aNumeri(i))
nUsati = nUsati +1
End If
Loop
End Sub
 
Sono riuscito a mettere i 5 numeri in 5 variabili diverse
l'unica cosa che non ho capito è la variabile - aflagusati - a cosa serve


Option Explicit
Sub Main
Dim a1 , a2 , a3 , a4 , a5
Dim nUsati,i
Dim aFlagUsati(10)
ReDim aNumeri(10)

aNumeri(1) = 9
aNumeri(2) = 18
aNumeri(3) = 27
aNumeri(4) = 36
aNumeri(5) = 45
aNumeri(6) = 54
aNumeri(7) = 63
aNumeri(8) = 72
aNumeri(9) = 81
aNumeri(10) = 90


Do While nUsati < 5
i = NumeroCasuale(1,10)
If aFlagUsati(i) = False Then
aFlagUsati(i) = True
'Call Scrivi(aNumeri(i))
If nUsati = 0 Then a1 = (aNumeri(i))
If nUsati = 1 Then a2 = (aNumeri(i))
If nUsati = 2 Then a3 = (aNumeri(i))
If nUsati = 3 Then a4 = (aNumeri(i))
If nUsati = 4 Then a5 = (aNumeri(i))
nUsati = nUsati + 1
End If
Loop
Scrivi (a1)
Scrivi (a2)
Scrivi (a3)
Scrivi (a4)
Scrivi (a5)

End Sub
 
CIAO SALVO,SE PUOI A COSA SERVE questo script..............uno sviluppo random o in base a freq,rit ecc ? grazie.
 
Ciao Salvo.

Tu non lo hai specificato ma per dare una risposta alla tua richiesta, Luigi ha dovuto supporre alcune cose.

Una prima e' che i 10 numeri, tra cui scegliere, fossero diversi.

Una seconda e sopattutto, che siano diversi i 5 numeri in uscita.

Perché prendendo numeri a caso ... in un gruppo molto ristretto ...

è molto probabile estrarre, più volte, uno stesso numero.

Così come lanciando un dado per più di qualche volta ... qualche numero si ripete.

Da questo deriva la necessità di escludere via-via quelli già scelti una volta.

Perchè se alcuni di essi si ripresentassero "doppi" genererebbero altrettanti errori.

Nasce pertanto l' esigenza di avere una memorizzazione di quanto è già stato "Estratto".

Ed è quanto e di cui chiedi ... ed il perchè esiste.

....

Memorie Diverse ... Lo sono.

Ma indicizzate sono più facilemente gestibili.

Mentre avessero "semplicemente" nomi diversi ... lo script sareebbe, in questo caso ...

non meno di 5 volte tanto (forse anche 25 considerando quello che ho scritto ! ).

Eppoi ... pensa a che sforzo di fantasia ... dover ... dare

un nome diverso ad ogni estratto / ambo / terno / quaterna ....

Infatti hai dovuto scrivere:

Scrivi (a1)
Scrivi (a2)
Scrivi (a3)
Scrivi (a4)
Scrivi (a5)

Che come vedi sono 5 linee

Mentre Luigi ...

aveva scritto :

Scrivi aNumeri(i)

Ma t'assicuro che è una sorta di involuzione, più grande, quella che hai introdotto.

alla quale, dovresti rinunciare cominciando a ragionare, sulle orme,

di quanto Luigi ti ha proposto.

In ogni caso Bravo che ti sei impegnato nel capire ... come funziona.

:)
 
Ultima modifica:
Ciao!

Hai ragione Joe, quando ho fatto la prima richiesta non avevo specificato tutto, ed è stato bravo LuigiB a capire anche
quello che non avevo scritto, ma certo non poteva prevedere tutto, quindi la variabile aflagusati serve a non avere ripetizioni
comunque con questo piccolo script sò molte più cose di prima a riguardo degli script e lo devo a voi. Grazie!

Per Alien, ti rispondo più tardi perchè mia moglie sta rompendo che dobbiamo uscire, a dopo. Ciao!
 
Ultima modifica:
Per Alien

Ho la pagina di una rivista che spiega del Quadrato Maltese, allora ho pensato di fare uno script, nella rivista dopo un certo numero di operazioni dice di inserire 5 numeri di figura 9, e se si azzeccano quelli giusti, escono ambi e terni, poi mi è venuta l'idea di inserire i 5 numeri di figura 9 in modo casuale e per questo ho chiesto aiuto, ho anche fatto un po di calcoli e mi sono venute 30240 combinazioni diverse di 5 numeri di figura 9 un po' troppe per inserirle tutte, adesso faccio anche uno script dove i cinque numeri li faccio inserire dall'esterno tramite inputbox. Poi cerchero negli script già fatti se ce ne qualcuno che cerca 5 numeri per ambo, terno, quaterna, e cinquina e lo unirò a questi per fare ricerche anche in automatico, ma per questo ci vorra un po' di tempo, ti posto la pagina della rivista.

Ciao!

Vedi l'allegato 14371
 
acc...cavolacci l'allegato dice :::::Allegato specificato non è valido. Se hai seguito un link valido segnalalo all'amministratore


a CED non gli va ?
 
E' strano io lo vedo benissimo, l'unica pecca è che se provo ad ingrandirlo le scritte le vedo doppie e sbiadite
provo a inserirlo di nuovo Il Quadrato Maltese.jpg
 
Ciao a Tutti!

Sto facendo delle prove usaldo la funzione <do while> con <loop> e già un paio di volte ho dovuto fare "control-alt-canc" ma non ha funzionato ed ho dovuno spegnere il pc dal tasto accensione, perchè luppava sempre di continuo, mi è capitato lanciando degli script che ci mettevano troppo tempo per dare l'esito ed ho dovuto fare stop, e mi appare una mascherina con su scritto che l'azione ha effetto se lo script gestisce l'interruzione con la funzione scriptinterrotto, allora ho pensato che potrei mettere questa funzione e così eviterei di spegnere il pc, allora volevo chiedere qual'è questa funzione e come la posso applicare?

Grazie
 
Ultima modifica:
ahah inventato un nuovo termine .. .si vede che sei portato il termine esiste ... ehm non si scrive cosi ...

il fatto che il ciclo sia durato cosi tanto da indurti a cercare di uscire killando il programa è al 99,99% sintomo
che hai sbagliato qualcosa a livello logico ..
per farsi che ctrl+alt+canc abbiano effetto dentro al loop devi usare la funzione DoEventsEx
invece per poter uscire alla pressione del tasto stop dentro al loop devi inserire questa riga

Codice:
if scriptinterrotto then exit  do
 
Stavo scherzando, sicuramente l'ho sentito da qualche parte.

Metterò subito in pratica i tuoi insegnamenti.

Grazie .

Ciao!
 
Ultima modifica:
Ciao a Tutti!

Sto facendo uno script dove chiedo di inserire 5 numeri di figura 9 tramite inputbox
ed ho fatto queste 5 righe

c1 = InputBox("Inserisci primo numero di fig. 9)",c1)
c2 = InputBox("Inserisci secondo numero di fig. 9)",c2)
c3 = InputBox("Inserisci terzo numero di fig. 9)",c3)
c4 = InputBox("Inserisci quarto numero di fig. 9)",c4)
c5 = InputBox("Inserisci quinto numero di fig. 9)",c5)

funziona, però non mi piace, perchè non c'è il controllo su quello che si inserisce, cioe, posso inserire anche numeri non di figura 9, e lo script li accetta come buoni, oppure inserire numeri superiori a 90, o con più di due cifre.
Negli script già fatti c'è qualche esempio però non si adatta a quelo che serve in questo, ho provato ad adattarli cambiando le variabili, ma è stato inutile. Adesso vi spiego come vorrei che fosse, lo script chiede di inserire il primo numero, se si inserisce un numero di figura 9 passa al secondo numero, altrimenti dovrebbe apparire una mascherina con scritto più o meno così " il numero inserito non è di figura 9 " ed apparire di nuovo la mascherina che chiede di inserire il primo numero, e così per tutte e 5 le inserzioni, però se non si può fare così, va bene qualunque altra soluzione.

Grazie!
 
Salvo prova questa soluzione e buon studio.

Codice:
Sub Main
	c1 = Int(InputBox("Inserisci primo numero di fig. 9)",,9))
	If Figura(c1) = 9 Then
	Else
		MsgBox("Numero immesso errato")
		c1 = InputBox("Inserisci primo numero di fig. 9)",,9)
	End If
	sr = "1° Numero : " & c1 & vbCrLf
	c2 = Int(InputBox(sr & vbCrLf,"Inserisci secondo numero di fig. 9)",18))
	If Figura(c2) = 9 Then
	Else
		MsgBox("Numero immesso errato")
		c2 = Int(InputBox(sr & vbCrLf,"Inserisci secondo numero di fig. 9)",18))
	End If
	sr = sr & "2° Numero : " & c2 & vbCrLf
	c3 = Int(InputBox(sr & vbCrLf,"Inserisci terzo numero di fig. 9)",27))
	If Figura(c3) = 9 Then
	Else
		MsgBox("Numero immesso errato")
		c3 = Int(InputBox(sr & vbCrLf,"Inserisci terzo numero di fig. 9)",27))
	End If
	sr = sr & "3° Numero : " & c3 & vbCrLf
	c4 = Int(InputBox(sr & vbCrLf,"Inserisci quarto numero di fig. 9)",36))
	If Figura(c4) = 9 Then
	Else
		MsgBox("Numero immesso errato")
		c4 = Int(InputBox(sr & vbCrLf,"Inserisci quarto numero di fig. 9)",36))End If
		sr = sr & "4° Numero : " & c4 & vbCrLf
		c5 = Int(InputBox(sr & vbCrLf,"Inserisci quinto numero di fig. 9)",45))
		If Figura(c5) = 9 Then
		Else
			MsgBox("Numero immesso errato")
			c5 = Int(InputBox(sr & vbCrLf,"Inserisci quinto numero di fig. 9)",45))
		End If
		sr = sr & "5° Numero : " & c5 & vbCrLf
		Call Scrivi(sr)
End Sub

:)
 
Perfetto Mike58

L'ho provato e funziona, hai ragione ce ne avrò da studiare per capirci qualcosa.

Grazie! Ciao!
 
Salvo la lampadina in testa già c'è, basta mettere in moto l'energia per farla funzionare, scherzi a parte basta avere la curiosità di imparare e non mi pare ti manchi.

un saluto
 
ciao grande Mike, ciao salvo50
tra i test c'è la sub sceglidalista
non so se può esserti utile inserisco questo script
Codice:
Sub Main
    Dim aNum,k
    Dim aNumSel(10)
    aNum = Array("9","18","27","36","45","54","63","72","81","90")
    For k = 0 To UBound(aNum)
        aNum(k) = aNum(k)
    Next
    If ScegliDaLista(aNum,aNumSel) = 5 Then
        For k = 0 To 10
            If aNumSel(k) Then
                Call Scrivi(aNum(k))
            End If
        Next
    Else
        MsgBox "Devi inserire 5 valori"
    End If
End Sub

sarebbe utile inserire un ciclo tipo:
do while scegliDaLista(anum,aNumSel)<>5
msgBox " Devi inserire 5 valori"
Loop
per questo lascio lo spazio a Mike a joe o a Luigi
Ciao
Complimenti :)
 
Ottimo anche così I Legend, visto che hai messo il controllo per i numeri da prendere in considerazione un conseguente loop mi superfluo, comunque Bravo e altro materiale per la curiosità dell'amico salvo.

Ciao
 
Ciao a Tutti!

In effetti dopo un po' di prove mi ero accorto di questo "difetto" ma la mancanza era stata mia perchè non lo avevo
specificato nella richiesta, poi anche perchè volevo vedere se riuscivo a risolverlo da solo senza aiuti, non ho detto
niente a Mike58 e l'ho modificato in questo modo, tutto bene per il primo numero, ho provato più di 5 volte il numero
sbagliato e mi appariva sempre il messaggio "numero immesso errato" e poi di nuovo inserisci il primo numero, ok ho
detto è fatta, faccio il secondo numero uguale al primo ed iniziano i guai, l'ho fatto uguale ma non va, luppa sempre di continuo, eppure e fatto come il primo o mi sta sfuggendo qualcosa, a questo proposito volevo chiedere come si deve inserire fa funzione "doeventsex", anche la sintassi, perchè ogni volta che luppa devo spegnere il pc. Quello di i leggend non l'ho ancora provato ma lo farò al più presto, sembra interessante quello di fare un array, anche perchè prima di chiedere aiuto ci avevo provato io a fare una cosa del genere ma non mi era riuscita. Comunque mi piacerebbe sapere perchè la modifica che ho fatto io non funziona, al secondo do while si blocca.

Grazie.


Codice:
Do While c1 < >(Figura(9))
c1 = Int(InputBox("Inserisci primo numero di fig. 9)",,9))
	If Figura(c1) = 9 Then
	Else
		MsgBox("Numero immesso errato")
		
		 
	End If
	Loop
	
	sr = "1° Numero : " & c1 & vbCrLf
	
	Do While c2 < >(Figura(9))
	c2 = Int(InputBox(sr & vbCrLf,"Inserisci secondo numero di fig. 9)",18))
	If Figura(c2) = 9 Then
	Else
		MsgBox("Numero immesso errato")
		 
	End If
	Loop
	sr = sr & "2° Numero : " & c2 & vbCrLf
	c3 = Int(InputBox(sr & vbCrLf,"Inserisci terzo numero di fig. 9)",27))
	If Figura(c3) = 9 Then
	Else
		MsgBox("Numero immesso errato")
		c3 = Int(InputBox(sr & vbCrLf,"Inserisci terzo numero di fig. 9)",27))
	End If
	sr = sr & "3° Numero : " & c3 & vbCrLf
	c4 = Int(InputBox(sr & vbCrLf,"Inserisci quarto numero di fig. 9)",36))
	If Figura(c4) = 9 Then
	Else
		MsgBox("Numero immesso errato")
		c4 = Int(InputBox(sr & vbCrLf,"Inserisci quarto numero di fig. 9)",36))End If
		sr = sr & "4° Numero : " & c4 & vbCrLf
		c5 = Int(InputBox(sr & vbCrLf,"Inserisci quinto numero di fig. 9)",45))
		If Figura(c5) = 9 Then
		Else
			MsgBox("Numero immesso errato")
			c5 = Int(InputBox(sr & vbCrLf,"Inserisci quinto numero di fig. 9)",45))
		End If
		sr = sr & "5° Numero : " & c5 & vbCrLf
 
Ultima modifica:
Volevo specificare che per l'inserimento del primo numero ha funzionato tutto bene finchè non ho inserito il secondo, dopo avere fatto la modifica al secondo numero, non ha funzionato neanche la prima modifica sul primo numero, cioè appena inserito il secondo do while, luppa pure il primo do while
 
Salvo anch'io con il Do while - loop litigo spesso e lo uso poco, il mio era un esempio se vuoi tenere un controllo per i numeri immessi, anche se la soluzione di I legend è più performante.
provala.

Poi ognuno di noi fa proprio quello è a noi più adatto.

ciao
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 26 novembre 2024
    Bari
    35
    16
    24
    41
    85
    Cagliari
    89
    30
    10
    81
    72
    Firenze
    38
    60
    16
    13
    28
    Genova
    52
    15
    80
    08
    53
    Milano
    33
    77
    06
    54
    73
    Napoli
    01
    50
    64
    35
    36
    Palermo
    02
    01
    19
    33
    62
    Roma
    33
    48
    72
    47
    68
    Torino
    62
    28
    18
    75
    31
    Venezia
    03
    54
    27
    14
    71
    Nazionale
    02
    44
    27
    86
    78
    Estrazione Simbolotto
    Torino
    30
    07
    39
    14
    19

Ultimi Messaggi

Indietro
Alto