none
Me ajudem nessa lógica RRS feed

  • Pergunta

  • Olá pessoal do MSDN. Estou apanhando na lógica para montar uma pequena rotina envolvendo uma matriz dupla. Preciso montar uma rotina que popule uma matriz dupla, poderia popular essa matriz manualmente, mas a rotina deve ficar enorme.

    A matriz é  dimensionada assim: 

    Dim matrizSeq(25,25) As Integer

    Quero que a rotina funcione da seguinte maneira, insiro uma variável num TexBox que varia de 2 a 15, se eu inserir o 2 a rotina deve popular a matriz com duas dezenas, da seguinte forma:

    1,2 : 2,3 : 3,4 ...até  24:25  Essa seria a matriz de duas dezenas, se eu inserir o 3 no TextBox, popularia a matriz de três dezenas, assim:

    1,2,3 : 2,3,4 : 3,4,5.... até 23,24,25 Essa seria a matriz de três dezenas, se eu inserir o 4 no TextBox, a matriz seria populada com quatro dezenas, seria assim:

    1,2,3,4 : 2,3,4,5 : 3,4,5,6 ..... até 22,23,24,25

    Acredito que com estes exemplos já se consegue entender como seria a lógica da rotina, para finalizar, como escrevi antes a variável deve variar de 2 a 15, então a última matriz de 15 dezenas ficaria populada assim:

    1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 : 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 : 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 até 10,11,12,13,15,16,17,18,19,20,21,22,23,24,25

    A lógica parece aparentemente fácil, mas como estou há 3 dias tentando monta-la, resolvi apelar para conhecimento de algum amigo que possa me dar essa força.

    Obrigado/Durval



    domingo, 28 de fevereiro de 2021 02:30

Todas as Respostas

  • Boa tarde,

    Não tenho nenhuma experiência com o VB, mas segue uma sugestão para testes:

    Dim matrizSeq(25,25) As Integer
    Dim qtdDezenas As Integer = Int32.Parse(TextBox1.Text)
    Dim numero As Integer = 1;
    Dim indGeral As Integer
    Dim dezenas As Integer
    
    Do
        indGeral = numero - 1;
        For indDezenas As Integer = 0 To qtdDezenas - 1
            matrizSeq(indGeral, indDezenas) = numero + indDezenas
        Next
    
        numero += 1
    Loop Until numero + qtdDezenas > 25

    Não fiz nenhum teste, pode ser que tenha algum erro.

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    domingo, 28 de fevereiro de 2021 20:56
  • Coloque um textbox, um button e um listbox em um form:

            Dim q As Integer
            q = TextBox1.Text - 1
            Dim matrizSeq(25, q) As Integer
    
            Dim i As Integer
            Dim j As Integer
            j = 1
    
            For x = 0 To 24
                i = j
                For y = 0 To q
    
                    matrizSeq(x, y) = i
                    i = i + 1
                Next y
                j = j + 1
            Next
    
            'Pra verificar o resultado em um listbox
            Dim s As String
            ListBox1.Items.Clear()
    
            For x = 0 To 24
                s = x + 1 & ": "
                For y = 0 To q
                    s = s & matrizSeq(x, y) & ","
                Next
                ListBox1.Items.Add(s)
            Next


    Natan


    • Editado 'Natan Silva domingo, 28 de fevereiro de 2021 23:05
    domingo, 28 de fevereiro de 2021 23:03
  • Valeu, obrigado Gapimex, vou testar.

    Durval/01/03/21

    segunda-feira, 1 de março de 2021 18:05
  • Bom de mais Natan, obrigado mesmo. Parece que você leu meus pensamentos criando também o método de fazer a verificação com o ListBox. Só tenho que fazer uma pequena modificação porque o limite é 25, a tua rotina enumera até 25 levando as dezenas com valores acima de 25.

    Agradeço tua força, obrigado

    Durval 01/03/21

    segunda-feira, 1 de março de 2021 18:13
  • Que bom Durval, não esqueça de Marcar como Resposta!

    Natan

    segunda-feira, 1 de março de 2021 19:03
  • Obrigado a todos vocês por ajudar 
    terça-feira, 2 de março de 2021 12:02
    Moderador