Autore Topic: Confronti e GOTO  (Letto 768 volte)

Skeell

  • Visitatore
Confronti e GOTO
« il: 23 Febbraio 2017, 11:08:22 »
scusate calcolate come risolto
« Ultima modifica: 26 Febbraio 2017, 14:22:28 da Skeell »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Confronti e GOTO
« Risposta #1 il: 23 Febbraio 2017, 11:45:31 »
Si ci sono alcuni errori ma prima di indicarteli, ti converrebbe leggere questo post e vedere se riesci a rimediare da solo, altrimenti ritorni a chiedere.

Per favore il codice inseriscilo fra i tag code, premi su modifica, selezioni il codice e agisci sui cancelletti.

Grazie

P.S. se ti riesce di evitare goto è meglio.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Arco

  • Gambero
  • **
  • Post: 93
    • Mostra profilo
Re:Confronti e GOTO
« Risposta #2 il: 23 Febbraio 2017, 15:18:42 »
Il confronto IF...... va fatto con variabili dello stesso tipo.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Confronti e GOTO
« Risposta #3 il: 23 Febbraio 2017, 21:04:49 »
Il confronto IF...... va fatto con variabili dello stesso tipo.

Voglio solo rendere più esplicito ciò che Arco giustamente ti fa notare.


" estratto ", rinvia ad una variabile automatica che hai dichiarato nel tuo codice di tipo Intero;

" estratto[i - 1] ", rinvia ad un elemento di indice i-1 di una variabile vettoriale, che presenta il medesimo nome della predetta variabile "estratto".

« Ultima modifica: 23 Febbraio 2017, 23:02:48 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Confronti e GOTO
« Risposta #4 il: 23 Febbraio 2017, 21:25:28 »
Si è vero ma anche col vettore rimane un codice inspiegabile o meglio spiegabile così:
Codice: [Seleziona]
' Gambas class file

Public 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
« Ultima modifica: 24 Febbraio 2017, 12:09:20 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Confronti e GOTO
« Risposta #5 il: 23 Febbraio 2017, 21:29:15 »
Si è vero ma anche col vettore rimane un codice inspiegabile


Io ed Arco abbiamo risposto alla domanda fondamentale, posta da skeell, relativa all'errore.
Ritengo che ora si debba attendere cosa vorrà fare skeell.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Confronti e GOTO
« Risposta #6 il: 23 Febbraio 2017, 21:46:07 »
Si è vero ma anche col vettore rimane un codice inspiegabile


Io 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 è che essendo sbagliata l'impostazione dell'algoritmo mi sembrava più giusto affrontare il discorso nella sua interezza e pertanto ho creduto di completare il ragionamento, se credete che sia sbagliato quanto ho scritto posso cancellarlo.
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Confronti e GOTO
« Risposta #7 il: 23 Febbraio 2017, 23:00:57 »
Scusate non voleva essere una critica alle vostre giuste segnalazioni
Lo so.



« Ultima modifica: 24 Febbraio 2017, 01:08:58 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re:Confronti e GOTO
« Risposta #8 il: 23 Febbraio 2017, 23:27:44 »
La mia personale interpretazione:

Codice: [Seleziona]
Public Sub Button1_Click()
Dim estratti As New Byte[] 'array con i numeri estratti
Dim serie As New Byte[] 'la serie dei 90 numeri
Dim i, j As Byte 'contatori
Randomize 'attiviamo il generatore di numeri casuali
For i = 0 To 89 'riempiamo l'array con i 90 numeri
   serie.Push(i + 1)
Next
i = 0 'riazzeriamo i
Do '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
   Endif
Loop Until i = 7 'il ciclo si ripete per 6 numeri, poi esce
TextLabel1.Text = " OK! Adesso giocali e.. buona fortuna"
End
« Ultima modifica: 23 Febbraio 2017, 23:29:01 da Top Fuel »
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Confronti e GOTO
« Risposta #9 il: 24 Febbraio 2017, 12:00:17 »
Uhmmm vedo almeno un errore qui:
Codice: [Seleziona]
 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?
Se J = 90 vai fuori limite del vettore

E poi ti sei dimenticato di mostrare i numeri da giocare, questo potrebbe essere un bene infatti come si sa nei giochi di azzardo vince solo il banco.  :D

Una cosa però me l'hai suggerita i numeri estratti del super enalotto sono 6 e non 5 e pertanto hai fatto emergere un ulteriore errore nel progetto di Skeell che vado a segnalare

 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re:Confronti e GOTO
« Risposta #10 il: 24 Febbraio 2017, 20:15:58 »
L'errore mi è sfuggito, basta fare serie[j-1]. :P
La visualizzazione dei numeri la deve fare skeell, mica io, deciderà lui cosa fare. ;D
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Confronti e GOTO
« Risposta #11 il: 24 Febbraio 2017, 21:28:52 »
L'errore mi è sfuggito, basta fare serie[j-1]. :P
La visualizzazione dei numeri la deve fare skeell, mica io, deciderà lui cosa fare. ;D

Se, se buonanotte!  :specchio:

Allora ti consiglio di cambiare anche questo codice così:

Codice: [Seleziona]
TextLabel1.Text = " OK! Adesso giocali se ne sei capace (solo per sensitivi)"
:P :P :P
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Confronti e GOTO
« Risposta #12 il: 24 Febbraio 2017, 21:30:50 »
L'errore mi è sfuggito, basta fare serie[j-1]. :P

Si ma in quanti posti?  >:( :evil:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro