Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Progetto ambizioso bis :D
Forum - C# / VB.NET - Progetto ambizioso bis :D

Avatar
cesco_fran (Normal User)
Rookie


Messaggi: 25
Iscritto: 26/12/2007

Segnala al moderatore
Postato alle 19:54
Sabato, 02/02/2008
Questo topic è stato chiuso dal moderatore

Salve a tutti vengo direttamente dalla sezione di Visual Basic, con una idea "pazza"

stavo pensando ad un programmino semplice (all'apparenza) ma complesso (nei contenuti) ;-)

Public Class V100
    Private Sub Estrazione_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Estrazione.Click
        Dim N1, N2, N3, N4, N5, N6 As Integer
        Dim Uguale As Boolean

        Do
            Uguale = True

            Randomize()

            N1 = Int(90 * Rnd() + 1)
            Num1.Text = N1 & " "

            N2 = Int(90 * Rnd() + 1)
            Num2.Text = N2 & " "

            N3 = Int(90 * Rnd() + 1)
            Num3.Text = N3 & " "

            N4 = Int(90 * Rnd() + 1)
            Num4.Text = N4 & " "

            N5 = Int(90 * Rnd() + 1)
            Num5.Text = N5 & " "

            N6 = Int(90 * Rnd() + 1)
            Num6.Text = N6 & " "


            If N1 = N2 Or N1 = N3 Or N1 = N4 Or N1 = N5 Or N1 = N6 Or N2 = N3 Or N2 = N4 Or N2 = N5 Or N2 = N6 Or N3 = N4 Or N3 = N5 Or N3 = N6 Or N4 = N5 Or N4 = N6 Or N5 = N6 Then Uguale = False

        Loop Until Uguale

    End Sub

End Class

Questo codice è per in visual basic 2005 express edition.
Su un form, c'è un bottone che aziona un processo, che inserisce 6 numeri diversi (*) da 1 a 90 in ogni textbox.

La prima domanda che vi porgo, visto che non sono sicurissimo è la seguente:

Realmente riesce (con il'if che ho fatto) a non estrarre un numero uguale?

Grazie per le risposte.

Vi dico subito che sono molto più di un principiante (ma molto di più :D), che mi sono trovato benissimo su questo sito e che...
il progetto è un working progress! :D

ad esempio, una volta constatato che non verranno estratti numeri uguali, il primo filtro (uno dei tanti) che vorrò aggiungere, con un checkbox fatto per l'occasione, quello di poter decidere quanti numeri pari ci debbano essere su 6 numeri :D

grazie per il momento a tutti. Ciao

Ultima modifica effettuata da cesco_fran il 02/02/2008 alle 20:03
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:54
Domenica, 03/02/2008
Sei molto più di un principiante, ma non conosci gli array e usi le funzioni di VB6 :rotfl:
Codice sorgente - presumibilmente VB.NET

  1. Public Function Extract6() As Byte()
  2.     'Usa un array di sei elementi e non sei variabili
  3.     Dim N(5) As Byte
  4.     'Usa la classe Random e non le funzioni prese dal VB classico
  5.     Dim Rnd As New Random
  6.     Dim Number As Byte
  7.  
  8.     For I As Byte = 0 To 5
  9.         'Se l'array lo contiene già, ne estrae un altro
  10.         Do
  11.             'Un numero tra 1 e 90
  12.             Number = Rnd.Next(1, 91)
  13.         Loop While Array.IndexOf(N, Number) >= 0
  14.             N(I) = Number
  15.     Next
  16.  
  17.     Return N
  18. End Function


Questa funzione estrae 6 numeri casuali diversi in forma di array.
Per mettere solo numeri pari, potresti estrarre solo numeri tra 1 e 45 e poi moltiplicarli per 2, oppure aumentare o diminuire di uno tutti i dispari.

Ultima modifica effettuata da Il Totem il 03/02/2008 alle 9:55
PM
Avatar
cesco_fran (Normal User)
Rookie


Messaggi: 25
Iscritto: 26/12/2007

Segnala al moderatore
Postato alle 13:56
Domenica, 03/02/2008
Ciao, speravo che rispondevi!

(si vede che sto leggendo la tua guida? :P )

...scherzo! ..ti ringrazio innanzitutto per la disponibilità, e che ho anticipato e te marcato (:D), era un progetto che avevo iniziato con il VB, poi da là "m'hanno cacciato" e mi hanno invitato a continuare di qua (forse mi caccierai anche te? :D).

Cmq il programmino che ho fatto, sulla carta l'avevo pensato in questo modo perchè poi, in un secondo momento, volevo aggiungere dei checkbox con altri sotto programmi, che permettevano di pilotare l'estrazione.
(dove ti posso mandare il programmino funzionante, così vedi anche la struttura che avevo fatto, in maniera da renderti conto meglio della pazzia!)

Tornando al progetto..

struttura base semplice (estrae 6 numeri casuali, diversi tra loro e li mette in 6 boxtext).
successivamente, attivando i checkbox, vengono ad inserirsi in questa struttura base, ulteriori filtri (come accennato, ad esempio il poter scegliere quanti numeri pari da un minimo di 1 ad un massimo di 6, inserendo il valore in un textbox).

Fatto ed inserito nel circuito questo filtro, passerò ad un altro (ad esempio, il poter scegliere quanti numeri primi avere nella sestina)

Fatto ed inserito nel circuito questo filtro,
passerò ad un altro (ecc ecc)

in pratica voglio creare una struttura base (come quella proposta), e mettere degli if per ogni checkbox, che se attivati, devono filtrare la sestina estratta dal programma base, ed in base all'esito del controllo, o procede alla visualizzazione, o passa al seguente checkbox, o ripete l'estrazione.

grazie ancora..

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:32
Lunedì, 04/02/2008
Prima segui il mio codice per fare quello che hai chiesto. Poi, se vuoi continuare, mandami il progetto a nicolo1990[at]yahoo[dot]it. Secondo me, per i filtri potresti usare dei delegate multipli: anche se non sono l'unica soluzione, sono certamente la più sintetica.

PM
Avatar
cesco_fran (Normal User)
Rookie


Messaggi: 25
Iscritto: 26/12/2007

Segnala al moderatore
Postato alle 22:25
Sabato, 09/02/2008
Ciao, non ti ho scritto per email perchè non sono arrivato a capo di un bel nulla! :(

Come hai capito, ma anche come non ho vergogna a dirlo, di programmazione non ci capisco un gran che!

Ho letto la tua guida e sono d'accordissimo sul sostenere il principio di Occam, ma questo va bene a chi già ci capisce un bel pò e non per chi, come me, inizia a "smanettare".

Il codice "stupidissimo" che avevo fatto, era di facile interpretazione ed elementare nella sintassi.

Infatti dopo le dichiarazioni, ho messo un "Do" che estraeva contemporanemente ed inseriva in 6 distinti text.box i numeri (casuali da 1 a 90).

Alla fine, ho inserito un "If" che permette di escludere dalle possibilità (facendo ripartire il "Do") che in un Textbox ci sia lo stesso numero di un altro Textbox.

Ora, capisco che il codice può essere migliore, e in questo mi hai dato un consiglio.

Ma nel codice che hai proposto, tra le tantissime cose che devo ancora capire, non so come far abbinare un numero in un textbox!!

Sarò ignorante, forse molto!
Ma non so come inserire in un ciclo, come quello proposto da te, il luogo (fisico) dove far inserire ogni numero!

Ho provato ad aggiungere prima del "Next" il comando  Num1.Text = Number & " "

poi al bottone ho inserito la parola "Extract6()"
E... come la più normale delle ipotesi, nel textbox1 viene visualizzato ad ogni click del bottone, un numero da 1 a 90!

Come primo dubbio mi è venuto in mente quello che nel textbox vengono visualizzati tutti e 6 i numeri, per prova ho allargato il textbox (visto che nell'interfaccia che avevo fatto era grande per 2 caratteri), ma non c'è stato nessun altro numero se non quello visualizzato!
E ho pensato che ha riscritto sopra per 6 volte un numero diverso e facendomi vedere solo l'ultimo dei 6 numeri estratti!

La domanda che mi faccio è la seguente:

Come faccio a far inserire ogni "N" in una textbox distinta e definita?

grazie a chiunque voglia aiutarmi! :)

PS ..ci provo da 5 giorni, ma anche andando a leggere e vedere altri programmi per prendere spunto, non ho trovato un "h"! :(

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:56
Domenica, 17/02/2008
Sto vedendo che ci sono moltissimi che non conoscono le funzioni, eppure mi sembrano abbastanza semplici.
Codice sorgente - presumibilmente Plain Text

  1. TextBox1.Text = Extract6()


Se hai più textbox, segnate da un indice finale (ad es. "TextBox2"), puoi usare questo codice:
Codice sorgente - presumibilmente VB.NET

  1. For I As Byte = 1 To 10 'Ammettiamo 10 TextBox
  2.   Me.Controls("TextBox" & I).Text = Exract6()
  3. Next


PM