none
Rotina complexa para mim. RRS feed

  • Pergunta

  • Amigos do Forum, a tempos há tempos que venho tentando mas não consigo criar a seguinte rotina:

    Pegando o conhecido triângulo de Pascal:        1 -------------- linha 1

                                                                     1     1 -----------  linha 2

                                                                 1      2    1 --------- linha 3

                                                              1     3     3    1 ------- linha 4  

                                                            1    4     6    4     1----- linha 5

    Neste exemplo fiz até a linha 5 mas a rotina que preciso terá que ir até a linha 14(por motivos óbvios, fiz só até a linha 5). Pois bem, a rotina teria que executar o seguinte:

    Se eu pedir para ela qual é a soma dos números da diagonal 5 e 3 (5=linha 5, 3=linha 3), a rotina teria que somar: 1+3+6 e fornecer o resultado que é igual a 10, então (5,3)=10, assim como (4,2)=6, assim como (3,3)=1 ou ainda (3,1)=3.

    Grato / Durval

    quarta-feira, 28 de setembro de 2016 19:43

Respostas

  • Bom dia Durval Teixeira,

    Para montar o triângulo:

    Module Module1
    
        Sub Main()
            Dim arr As Integer(,) = New Integer(14, 14) {}
            For i As Integer = 0 To 14
                For k As Integer = 14 To i + 1 Step -1
                    'print spaces
                    Console.Write(" ")
                Next
    
                For j As Integer = 0 To i - 1
                    If j = 0 OrElse i = j Then
                        arr(i, j) = 1
                    Else
                        arr(i, j) = arr(i - 1, j) + arr(i - 1, j - 1)
                    End If
                    Console.Write(arr(i, j) & " ")
                Next
                Console.WriteLine()
            Next
        End Sub
    
    End Module
    

    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Durval Teixeira quinta-feira, 29 de setembro de 2016 19:03
    quinta-feira, 29 de setembro de 2016 13:04
    Moderador
  • Muito obrigado novamente Robson, já me deu um start. Vou ver se consigo transformar para uso no Windows Forms.

    Mais para frente terei que conseguir todos os números das diagonais pois eles são coeficientes no meu aplicativo.

    Esta rotina servirá para diminuir o número de linhas de um aplicativo que já conta com quase 5000 linhas.

    A solução que adotei no aplicativo foi fazer por extenso, primeiro coloquei num papel o triângulo de pascal com as 14 linhas e criei 115 if's tipo: if linha1=7 and linha2=3 then soma=35 

    • Marcado como Resposta Durval Teixeira quinta-feira, 29 de setembro de 2016 19:33
    quinta-feira, 29 de setembro de 2016 19:33

Todas as Respostas

  • Bom dia Durval Teixeira,

    Para montar o triângulo:

    Module Module1
    
        Sub Main()
            Dim arr As Integer(,) = New Integer(14, 14) {}
            For i As Integer = 0 To 14
                For k As Integer = 14 To i + 1 Step -1
                    'print spaces
                    Console.Write(" ")
                Next
    
                For j As Integer = 0 To i - 1
                    If j = 0 OrElse i = j Then
                        arr(i, j) = 1
                    Else
                        arr(i, j) = arr(i - 1, j) + arr(i - 1, j - 1)
                    End If
                    Console.Write(arr(i, j) & " ")
                Next
                Console.WriteLine()
            Next
        End Sub
    
    End Module
    

    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Durval Teixeira quinta-feira, 29 de setembro de 2016 19:03
    quinta-feira, 29 de setembro de 2016 13:04
    Moderador
  • Muito obrigado novamente Robson, já me deu um start. Vou ver se consigo transformar para uso no Windows Forms.

    Mais para frente terei que conseguir todos os números das diagonais pois eles são coeficientes no meu aplicativo.

    Esta rotina servirá para diminuir o número de linhas de um aplicativo que já conta com quase 5000 linhas.

    A solução que adotei no aplicativo foi fazer por extenso, primeiro coloquei num papel o triângulo de pascal com as 14 linhas e criei 115 if's tipo: if linha1=7 and linha2=3 then soma=35 

    • Marcado como Resposta Durval Teixeira quinta-feira, 29 de setembro de 2016 19:33
    quinta-feira, 29 de setembro de 2016 19:33