19/05/2023: A causa di un errore sono stati cancellati, insieme ad account creati da bot, alcuni account legittimi. Si prega di leggere qui: https://www.gambas-it.org/smf/index.php?topic=9733.0
Il confronto IF...... va fatto con variabili dello stesso tipo.
' Gambas class filePublic Sub Button1_Click() ' Così come l'hai usato "estratto" deve essere un vettore. ' Visto l'uso puoi utilizzare Byte per risparmiare memoria. ' NOTA: In Gambas i vettori partono da zero. Dim estratto As New Integer[] Dim i As Integer ' Se pulisci prima puoi evitarti il tasto 2 TextBox1.Clear TextLabel1.Text = "" Wait 0.2 ' Per numeri realmente casuali attiva randomize Randomize ' Questo loop fa solo il controllo sul numero precedente, ' non su tutti i numeri e non ti garantisce sui doppioni ' (vedi il codice che ti avevo indicato) e contiene un ' **grave errore**. For i = 0 To 5 pippo: ' Rand restituisce integer estratto.Push(Rand(1, 90)) If i > 0 Then ' Il confronto avviene solo fra il numero attuale e ' quello precedente. ' Eseguendo solo sei loop ed escludendo il primo numero ' otterrai solo cinque numeri. If estratto[i] <> estratto[i - 1] Then TextBox1.Text &= " - " & estratto[i] & " - " Else ' Codice poco elegante e nella maggior parte dei casi inutile. ' Se lo si usa è buona norma scrivere il nome delle etichette ' maiuscolo e posizionate a destra. '' Questo in particolare così congegnato innesca un loop infinito '' come puoi vedere da quanto verrà scritto in console. '' Questo accade perché il codice anche se aggiunge un numero nuovo '' continua a leggere gli stessi due numeri che risulteranno pertanto '' sempre uguali. Print "ELSE" Print estratto[i], estratto[i - 1] Goto pippo Endif Endif Next TextLabel1.Text = " OK! Adesso giocali e.. buona fortuna"End
Si è vero ma anche col vettore rimane un codice inspiegabile
Citazione da: Gianluigi - 23 Febbraio 2017, 21:25:28Si è vero ma anche col vettore rimane un codice inspiegabileIo ed Arco abbiamo risposto alla domanda fondamentale, posta da skeell, relativa all'errore.Ritengo che ora si debba attendere cosa vorrà fare skeell.
Scusate non voleva essere una critica alle vostre giuste segnalazioni
Public Sub Button1_Click()Dim estratti As New Byte[] 'array con i numeri estrattiDim serie As New Byte[] 'la serie dei 90 numeriDim i, j As Byte 'contatoriRandomize 'attiviamo il generatore di numeri casualiFor i = 0 To 89 'riempiamo l'array con i 90 numeri serie.Push(i + 1)Nexti = 0 'riazzeriamo iDo 'inizio ciclo di assegnazione j = Rand(1, 90) 'una posizione a caso nei 90 numeri If serie[j] > 0 Then 'il numero in quella posizione vale più di zero? estratti.Push(serie[j]) 'lo usiamo serie[j] = 0 'e lo azzeriamo per evitare doppioni Inc i 'incrementiamo il contatore EndifLoop Until i = 7 'il ciclo si ripete per 6 numeri, poi esceTextLabel1.Text = " OK! Adesso giocali e.. buona fortuna"End
j = Rand(1, 90) 'una posizione a caso nei 90 numeri If serie[j] > 0 Then 'il numero in quella posizione vale più di zero?
L'errore mi è sfuggito, basta fare serie[j-1]. La visualizzazione dei numeri la deve fare skeell, mica io, deciderà lui cosa fare.
TextLabel1.Text = " OK! Adesso giocali se ne sei capace (solo per sensitivi)"
L'errore mi è sfuggito, basta fare serie[j-1].