Pedroalv Posted April 5, 2014 Report Share Posted April 5, 2014 (edited) Boas, estou com um problema no desenvolvimento deste quadrado magico, que consiste em pedir ao utilizador o tamanho do quadrado e os valores, depois a funcionalidade é somar as linhas, colunas e diagonais e dizer se ele e mágico ou não. O meu problema é na parte de somar as diagonais, não faço a mínima ideia de como o fazer tanto a diagonal de cima para baixo de como de baixo para cima, isto é o que tenho até agora : Public Class Form1 Private Sub btncalcular_Click(sender As Object, e As EventArgs) Handles btncalcular.Click Dim tamanho As Integer tamanho = Val(InputBox("Tamanho do Quadrado ?")) Dim vetCol(tamanho), vetLin(tamanho), As Integer Dim mat(tamanho, tamanho) As Integer lermatriz(mat, tamanho) calcular(mat, vetCol(tamanho), vetLin(tamanho)) End Sub Private Sub lermatriz(mat(,) As Integer, tamanho As Integer) Dim msg As String For l = 0 To tamanho - 1 msg = "" For c = 0 To tamanho - 1 mat(l, c) = Val(InputBox(" Elemento " & (l + 1) & "," & (c + 1))) msg += mat(l, c) & vbTab Next lstquadrado.Items.Add(msg) Next End Sub Private Sub calcular(mat(,) As Integer, tamanho As Integer, vetCol As Integer(), vetLin As Integer()) Dim c, l, diag1, diag2 As Integer 'Soma Colunas For l = 0 To l = tamanho - 1 For c = 0 To tamanho - 1 vetCol(c) = mat(l, c) + vetCol(c) Next Next 'Soma Linhas For l = 0 To l = tamanho - 1 For c = 0 To c = tamanho - 1 vetLin(l) = mat(l, c) + vetLin(l) Next Next ' Soma Diagonal cima pra baixo For l = 0 To l = tamanho - 1 For c = 0 To tamanho - 1 diag1 = Next Next End Class gostaria que me pudessem ajudar a completar :/ obrigado pela atenção Edited April 5, 2014 by Pedroalv Link to comment Share on other sites More sharing options...
vikcch Posted April 5, 2014 Report Share Posted April 5, 2014 Olá, esta secção é para vb6 ou versões anteriores... O que é um quadrado mágico? para correres um array (quadrado ex: 5x5) de duas dimensões na diagonal, basta um ciclo FOR onde o contador do FOR será o indice do array em ambas as dimensões.. ex: Dim myArr = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}} For i = 0 To myArr.GetUpperBound(0) MsgBox(myArr(i, i)) Next Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now