Controllo Completo Matrice

di il
9 risposte

Controllo Completo Matrice

Ciao a tutti, sono nuovo nel forum, il mio professore mi ha assegnato un compito secondo il quale io debba creare un programma su visual basic come il superenalotto da 4 righe e 6 colonne. Le variabili sono queste:
Dim Righe As Integer
Dim Colonne As Integer
Dim Matrice(4, 6) As Integer
Dim Numero As Integer
Dim NumeroIns(6) As Integer
Dim I As Integer
Dim NumeroInd(6) As Integer
Il programma inizia con l'inserimento dei 6 numeri giocati e dopo l'inserimento di questi il programma attraverso La funzione "Randomize" mi crea 24 numeri disposti in 6 colonne e 4 righe a caso.
dopo l'inserimento dei numeri giocati e l output dei numeri vincenti il programma deve controllare se quei numeri inseriti sono vincenti, e quindi deve controllare per ogni numero inserito la matrice.. infine se c'e una riga vincente deve stamparla. io ho fatto in questo modo che è molto ma molto lungo per il controllo dei numeri
   I = 1
        ' Inserimento numeri giocati da tastiera'
       NumeroIns(1) = InputBox("Inserisci il numero" + Str(I))
        I = I + 1
        NumeroIns(2) = InputBox("Inserisci il numero" + Str(I))
        I = I + 1
        NumeroIns(3) = InputBox("Inserisci il numero" + Str(I))
        I = I + 1
        NumeroIns(4) = InputBox("Inserisci il numero" + Str(I))
        I = I + 1
        NumeroIns(5) = InputBox("Inserisci il numero" + Str(I))
        I = I + 1
        NumeroIns(6) = InputBox("Inserisci il numero" + Str(I))
        I = I + 1
        
         'Creazione di 24 numeri a random'
        Randomize()
        For Righe = 1 To 4
            For Colonne = 1 To 6
                Randomize()
                Matrice(Righe, Colonne) = Int(Rnd() * 90) + 1
            Next
        Next
        For Righe = 1 To 4
            For Colonne = 1 To 6
                Numero = Matrice(Righe, Colonne)
                ' Stampa dei 24 numeri su console'
                Console.Write("{0:0}" + vbTab, Numero)
            Next
            Console.WriteLine()
        Next
       ' CONTROLLO DEL 1 NUMERO'
        If NumeroIns(1) = Matrice(1, 1) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(1, 2) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(1, 3) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(1, 4) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(1, 5) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(1, 6) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(2, 1) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(2, 2) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(2, 3) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(2, 4) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(2, 5) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(2, 6) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(3, 1) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(3, 2) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(3, 3) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(3, 4) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(3, 5) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(3, 6) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(4, 1) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(4, 2) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(4, 3) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(4, 4) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(4, 5) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        If NumeroIns(1) = Matrice(4, 6) Then
            NumeroInd(1) = NumeroIns(1)
        End If
        'Stampa del Numero 1'
        If NumeroInd(1) = 0 Then
            Console.WriteLine("Non risulta nel tabellare il seguente numero: ", NumeroIns(5))
        Else
            Console.WriteLine("Hai indovinato il 1 numero", NumeroInd)
        End If
Il controllo del numero 1 è uguale al numero 2,3,4,5,6 e il programma è lunghissimo e non va bene.
Sapete dirmi un metodo attraverso cui si possta fare il controllo della matrice velocemente e non scrivendo tante cose?
io avevo pensato di fare If NumeroIns(1)= Matrice () controllando tutti e 24 numeri senza stare a scrivere il procedimento di un controllo alla volta, ma il programma mi da errore. Infine vorrei sapere se è possibile stampare la riga vincente (Bisogna indovinare tutti e 6 i numeri della riga), so che è impossibile intovinarli tutti e 6 ma il prof lo vuole.
Ho bisogno di aiuto non so come fare

9 Risposte

  • Re: Controllo Completo Matrice

    Ma non è Visual Basic 6 ...
  • Re: Controllo Completo Matrice

    La logica di programmazione cambia?
  • Re: Controllo Completo Matrice

    E questo che c'entra? Neanche in C++ cambia la logica ma la sezione del forum che hai usato è sbagliata. Contatta il moderatore in privato.
  • Re: Controllo Completo Matrice

    X Jonatan: ho spostato nella sezione corretta VB.NET. Il codice va formattato includendolo tra i tag CODE
    X Oregon: grazie della segnalazione
  • Re: Controllo Completo Matrice

    Comunque, se ci sono parti che si ripetono, penserei subito di usare un ciclo ... hai provato?
  • Re: Controllo Completo Matrice

    Sisi ho provato con il ciclo e mi fa determinate operazioni molte volte in più.
  • Re: Controllo Completo Matrice

    Se non ci fai vedere cosa hai fatto, cosa facciamo, ci inventiamo il codice?
  • Re: Controllo Completo Matrice

    Bene sono riuscito a farlo con i cicli così come mi hai detto, adesso rimane l'ultimo problema, quello di stampare la riga vincente
    Questa è la codifica:
    Module Module1
    
        Sub Main()
            Dim Righe As Integer
            Dim Colonna As Integer
            Dim Matrice(4, 6) As Integer
            Dim Numero As Integer
            Dim NumeroIns(6) As Integer
            Dim I As Integer
            Dim NumeroInd(6) As Integer
            Dim ColonnaCalc As Integer
            Dim RigaCalc As Integer
            Colonna = 0
            I = 1
            NumeroIns(1) = InputBox("Inserisci il numero" + Str(I))
            I = I + 1
            NumeroIns(2) = InputBox("Inserisci il numero" + Str(I))
            I = I + 1
            NumeroIns(3) = InputBox("Inserisci il numero" + Str(I))
            I = I + 1
            NumeroIns(4) = InputBox("Inserisci il numero" + Str(I))
            I = I + 1
            NumeroIns(5) = InputBox("Inserisci il numero" + Str(I))
            I = I + 1
            NumeroIns(6) = InputBox("Inserisci il numero" + Str(I))
    
            I = I + 1
    
            '_________________________________________NUMERI RANDOM__________________________________________________________'
    
            Randomize()
            For RigaCalc = 1 To 4
                For ColonnaCalc = 1 To 6
                    Randomize()
                    Matrice(RigaCalc, ColonnaCalc) = Int(Rnd() * 90) + 1
                Next
            Next
            For RigaCalc = 1 To 4
                For ColonnaCalc = 1 To 6
                    Numero = Matrice(RigaCalc, ColonnaCalc)
                    Console.Write("{0:0}" + vbTab, Numero)
                Next
                Console.WriteLine()
            Next
            Console.ReadLine()
            '____________________________CONTROLLO NUMERO(1) NELLA MATRICE (1 to 4; 1 to 6__________________________________'
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 1
    
                Colonna = Colonna + 1
                If NumeroIns(1) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(1) = NumeroIns(1)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 2
    
                Colonna = Colonna + 1
                If NumeroIns(1) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(1) = NumeroIns(1)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 3
    
                Colonna = Colonna + 1
                If NumeroIns(1) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(1) = NumeroIns(1)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 4
    
                Colonna = Colonna + 1
                If NumeroIns(1) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(1) = NumeroIns(1)
                End If
            Loop
    
            'Stampa del Numero 1'
            If NumeroInd(1) = 0 Then
                Console.WriteLine("Il 1° numero non risulta nel tabellare")
            Else
                Console.WriteLine("Hai indovinato il 1° numero")
            End If
    
            Console.ReadLine()
            '____________________________CONTROLLO NUMERO(2) NELLA MATRICE (1 to 4; 1 to 6__________________________________'
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 1
    
                Colonna = Colonna + 1
                If NumeroIns(2) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(2) = NumeroIns(2)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 2
    
                Colonna = Colonna + 1
                If NumeroIns(2) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(2) = NumeroIns(2)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 3
    
                Colonna = Colonna + 1
                If NumeroIns(2) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(2) = NumeroIns(2)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 4
    
                Colonna = Colonna + 1
                If NumeroIns(2) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(2) = NumeroIns(2)
                End If
            Loop
    
            'Stampa del Numero 2'
            If NumeroInd(2) = 0 Then
                Console.WriteLine("Il 2° numero non risulta nel tabellare")
            Else
                Console.WriteLine("Hai indovinato il 2° numero")
            End If
    
            Console.ReadLine()
            '____________________________CONTROLLO NUMERO(3) NELLA MATRICE (1 to 4; 1 to 6__________________________________'
            Colonna = 0
    
            'Inizio ricerca 3 numero'
            Do While (Colonna <= 5)
                RigaCalc = 1
    
                Colonna = Colonna + 1
                If NumeroIns(3) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(3) = NumeroIns(3)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 2
    
                Colonna = Colonna + 1
                If NumeroIns(3) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(3) = NumeroIns(3)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 3
    
                Colonna = Colonna + 1
                If NumeroIns(3) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(3) = NumeroIns(3)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 4
    
                Colonna = Colonna + 1
                If NumeroIns(3) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(3) = NumeroIns(3)
                End If
            Loop
    
            'Stampa del Numero 3'
            If NumeroInd(3) = 0 Then
                Console.WriteLine("Il 3° numero non risulta nel tabellare")
            Else
                Console.WriteLine("Hai indovinato il 3° numero")
            End If
    
            Console.ReadLine()
            '____________________________CONTROLLO NUMERO(4) NELLA MATRICE (1 to 4; 1 to 6__________________________________'
            Colonna = 0
    
            'RICERCA DEL 4 NUMERO'
            Do While (Colonna <= 5)
                RigaCalc = 1
    
                Colonna = Colonna + 1
                If NumeroIns(4) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(4) = NumeroIns(4)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 2
    
                Colonna = Colonna + 1
                If NumeroIns(4) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(4) = NumeroIns(4)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 3
    
                Colonna = Colonna + 1
                If NumeroIns(4) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(4) = NumeroIns(4)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 4
    
                Colonna = Colonna + 1
                If NumeroIns(4) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(4) = NumeroIns(4)
                End If
            Loop
    
            'Stampa del Numero 4'
            If NumeroInd(4) = 0 Then
                Console.WriteLine("Il 4° numero non risulta nel tabellare")
            Else
                Console.WriteLine("Hai indovinato il 4° numero")
            End If
    
            Console.ReadLine()
            '____________________________CONTROLLO NUMERO(5) NELLA MATRICE (1 to 4; 1 to 6__________________________________'
            Colonna = 0
    
            'RICERCA DEL 5 NUMERO'
            Do While (Colonna <= 5)
                RigaCalc = 1
    
                Colonna = Colonna + 1
                If NumeroIns(5) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(5) = NumeroIns(5)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 2
    
                Colonna = Colonna + 1
                If NumeroIns(5) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(5) = NumeroIns(5)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 3
    
                Colonna = Colonna + 1
                If NumeroIns(5) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(5) = NumeroIns(5)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 4
    
                Colonna = Colonna + 1
                If NumeroIns(5) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(5) = NumeroIns(5)
                End If
            Loop
    
            'Stampa del Numero 5'
            If NumeroInd(5) = 0 Then
                Console.WriteLine("Il 5° numero non risulta nel tabellare")
            Else
                Console.WriteLine("Hai indovinato il 5° numero")
            End If
    
            Console.ReadLine()
            '____________________________CONTROLLO NUMERO(6) NELLA MATRICE (1 to 4; 1 to 6__________________________________'
            Colonna = 0
    
            'RICERCA DEL 6 NUMERO'
            Do While (Colonna <= 5)
                RigaCalc = 1
    
                Colonna = Colonna + 1
                If NumeroIns(6) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(6) = NumeroIns(6)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 2
    
                Colonna = Colonna + 1
                If NumeroIns(6) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(6) = NumeroIns(6)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 3
    
                Colonna = Colonna + 1
                If NumeroIns(6) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(6) = NumeroIns(6)
                End If
            Loop
    
            Colonna = 0
    
            Do While (Colonna <= 5)
                RigaCalc = 4
    
                Colonna = Colonna + 1
                If NumeroIns(6) = Matrice(RigaCalc, Colonna) Then
                    NumeroInd(6) = NumeroIns(6)
                End If
            Loop
    
            'Stampa del Numero 6'
            If NumeroInd(6) = 0 Then
                Console.WriteLine("Il 6° numero non risulta nel tabellare")
            Else
                Console.WriteLine("Hai indovinato il 6° numero")
            End If
            Console.ReadLine()
        End Sub
    End Module
    
    La condizione per fare uscire la riga vincente è quella di dire: Se tutti i numeri che hai inserito sono uguali a tutti i numeri inseriti in una riga, stampami la riga vincente. Come posso fare?
    Voglio darle un consiglio, se puoi copia la codifica e eseguila con VB per capire meglio di cosa sto parlando. Grazie per la sua pazienza
  • Re: Controllo Completo Matrice

    X Jonatan: cosa non ti è chiaro della mia frase "Il codice va formattato includendolo tra i tag CODE" ?
Devi accedere o registrarti per scrivere nel forum
9 risposte