SUMA DE 2 ARRAYS El objetivo de este ejemplo es cargar 2 arrays aleatoriamente con Random y despus mostrar la suma de esos arrays en un nuevo array. RANDOM Clase Random: Nos permite generar nmeros aleatorios. Tiene la siguiente forma: DIM RANDOM AS NEW RANDOM DIM NUMERO AS INTEGER NUMERO = RANDOM.NEXT(1,100) MSGBOX(NUMERO) NUMERO = RANDOM.NEXT(-50,50) MSGBOX(NUMERO)
El formulario lo creo del siguiente modo:
SUMAR 2 ARRAYS BIDIMENSIONALES VISUAL STUDIO ~ 2 ~ El cdigo quedara: Public Class Form1 Dim primerArray(2, 3) Dim segundoArray(2, 3) Dim sumaArrays(2, 3) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Para crear nmeros aleatoriamente Dim Random As New Random Dim numero As Integer = 0
'Cargar el primer array con valores aleatorios For i As Integer = 0 To primerArray.GetUpperBound(0) For j As Integer = 0 To primerArray.GetUpperBound(1) numero = Random.Next(1, 100) primerArray(i, j) = numero Next Next 'Mostrar el primer array en la Textbox correspondiente For i As Integer = 0 To primerArray.GetUpperBound(0) For j As Integer = 0 To primerArray.GetUpperBound(1) tbPrimerArray.Text += (primerArray(i, j)) & " " Next tbPrimerArray.Text &= ControlChars.CrLf Next 'Cargar el segundo array con valores aleatorios For i As Integer = 0 To segundoArray.GetUpperBound(0) For j As Integer = 0 To segundoArray.GetUpperBound(1) numero = Random.Next(1, 100) segundoArray(i, j) = numero Next Next 'Mostrar el segundo array en el textbox correspondiente For i As Integer = 0 To segundoArray.GetUpperBound(0) For j As Integer = 0 To segundoArray.GetUpperBound(1) tbSegundoArray.Text += (segundoArray(i, j)) & " " Next tbSegundoArray.Text &= ControlChars.CrLf Next 'Cargar el array suma con la suma de los dos arrays anteriores For i As Integer = 0 To sumaArrays.GetUpperBound(0) For j As Integer = 0 To segundoArray.GetUpperBound(1) sumaArrays(i, j) = primerArray(i, j) + segundoArray(i, j) Next Next 'mostrar el array suma For i As Integer = 0 To segundoArray.GetUpperBound(0) For j As Integer = 0 To segundoArray.GetUpperBound(1) tbSumaArrays.Text += (sumaArrays(i, j)) & " " Next tbSumaArrays.Text &= ControlChars.CrLf Next End Sub End Class SUMAR 2 ARRAYS BIDIMENSIONALES VISUAL STUDIO ~ 3 ~ MEJORA Aunque SOLO SE PUEDEN SUMAR 2 ARRAYS DE IGUAL TAMAO vamos a realizar esta suma haciendo que en el array con la suma se muestre la suma de las posiciones que poseen cada uno de los arrays. Public Class Form1 Dim primerArray(4, 6) Dim segundoArray(1, 2)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Para crear nmeros aleatoriamente Dim Random As New Random Dim numero As Integer = 0
'Cargar el primer array con valores aleatorios For i As Integer = 0 To primerArray.GetUpperBound(0) For j As Integer = 0 To primerArray.GetUpperBound(1) numero = Random.Next(1, 100) primerArray(i, j) = numero Next Next 'Mostrar el primer array en la Textbox correspondiente For i As Integer = 0 To primerArray.GetUpperBound(0) For j As Integer = 0 To primerArray.GetUpperBound(1) tbPrimerArray.Text += (primerArray(i, j)) & " " Next tbPrimerArray.Text &= ControlChars.CrLf Next 'Cargar el segundo array con valores aleatorios For i As Integer = 0 To segundoArray.GetUpperBound(0) For j As Integer = 0 To segundoArray.GetUpperBound(1) numero = Random.Next(1, 100) segundoArray(i, j) = numero Next Next 'Mostrar el segundo array en el textbox correspondiente For i As Integer = 0 To segundoArray.GetUpperBound(0) For j As Integer = 0 To segundoArray.GetUpperBound(1) tbSegundoArray.Text += (segundoArray(i, j)) & " " Next tbSegundoArray.Text &= ControlChars.CrLf Next
'Obtener el tamao que va a tener el array con la suma final Dim columna As Integer Dim fila As Integer 'Compruebo cual es el array que tiene ms filas y guardo el valor If (primerArray.GetUpperBound(0) > segundoArray.GetUpperBound(0)) Then fila = primerArray.GetUpperBound(0) Else fila = segundoArray.GetUpperBound(0) End If 'Compruebo cual es el array que tiene ms columnas y guardo el valor If (primerArray.GetUpperBound(1) > segundoArray.GetUpperBound(1)) Then columna = primerArray.GetUpperBound(1) Else columna = segundoArray.GetUpperBound(1) End If
'Creo 3 arrays del tamao final Dim sumaArrays(fila, columna) As Integer Dim copiaPrimerArray(fila, columna) As Integer Dim copiaSegundoArray(fila, columna) As Integer SUMAR 2 ARRAYS BIDIMENSIONALES VISUAL STUDIO ~ 4 ~ 'Copio el primerArray en un array que tiene el tamao del array final 'En donde no hay dato queda 0 For i As Integer = 0 To primerArray.GetUpperBound(0) For j As Integer = 0 To primerArray.GetUpperBound(1) copiaPrimerArray(i, j) = primerArray(i, j) Next Next 'Copio el segundoArray en un array que tiene el tamao del array final 'En donde no hay dato queda 0 For i As Integer = 0 To segundoArray.GetUpperBound(0) For j As Integer = 0 To segundoArray.GetUpperBound(1) copiaSegundoArray(i, j) = segundoArray(i, j) Next Next 'En el array final coloco la suma de los dos arrays copiados For i As Integer = 0 To sumaArrays.GetUpperBound(0) For j As Integer = 0 To sumaArrays.GetUpperBound(1) sumaArrays(i, j) = copiaPrimerArray(i, j) + copiaSegundoArray(i, j) Next Next 'mostrar el array suma For i As Integer = 0 To sumaArrays.GetUpperBound(0) For j As Integer = 0 To sumaArrays.GetUpperBound(1) tbSumaArrays.Text += (sumaArrays(i, j)) & " " Next tbSumaArrays.Text &= ControlChars.CrLf Next End Sub End Class
MEJORA Pedir el tamao de los arrays iniciales al usuario Public Class Form1 Dim fila As Integer Dim columna As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load fila = Val(InputBox("Introduce el nmero de filas del array")) columna = Val(InputBox("Introduce el nmero de columnas del array")) Dim primerArray(fila, columna) fila = Val(InputBox("Introduce el nmero de filas del array")) columna = Val(InputBox("Introduce el nmero de columnas del array")) Dim segundoArray(fila, columna)
'Para crear nmeros aleatoriamente Dim Random As New Random Dim numero As Integer = 0
'Cargar el primer array con valores aleatorios For i As Integer = 0 To primerArray.GetUpperBound(0) For j As Integer = 0 To primerArray.GetUpperBound(1) numero = Random.Next(1, 100) primerArray(i, j) = numero Next Next 'Mostrar el primer array en la Textbox correspondiente For i As Integer = 0 To primerArray.GetUpperBound(0) For j As Integer = 0 To primerArray.GetUpperBound(1) tbPrimerArray.Text += (primerArray(i, j)) & " " Next tbPrimerArray.Text &= ControlChars.CrLf Next SUMAR 2 ARRAYS BIDIMENSIONALES VISUAL STUDIO ~ 5 ~ 'Cargar el segundo array con valores aleatorios For i As Integer = 0 To segundoArray.GetUpperBound(0) For j As Integer = 0 To segundoArray.GetUpperBound(1) numero = Random.Next(1, 100) segundoArray(i, j) = numero Next Next 'Mostrar el segundo array en el textbox correspondiente For i As Integer = 0 To segundoArray.GetUpperBound(0) For j As Integer = 0 To segundoArray.GetUpperBound(1) tbSegundoArray.Text += (segundoArray(i, j)) & " " Next tbSegundoArray.Text &= ControlChars.CrLf Next
'Obtener el tamao que va a tener el array con la suma final 'Compruebo cual es el array que tiene ms filas y guardo el valor If (primerArray.GetUpperBound(0) > segundoArray.GetUpperBound(0)) Then fila = primerArray.GetUpperBound(0) Else fila = segundoArray.GetUpperBound(0) End If 'Compruebo cual es el array que tiene ms columnas y guardo el valor If (primerArray.GetUpperBound(1) > segundoArray.GetUpperBound(1)) Then columna = primerArray.GetUpperBound(1) Else columna = segundoArray.GetUpperBound(1) End If
'Creo 3 arrays del tamao final Dim sumaArrays(fila, columna) As Integer Dim copiaPrimerArray(fila, columna) As Integer Dim copiaSegundoArray(fila, columna) As Integer 'Copio el primerArray en un array que tiene el tamao del array final 'En donde no hay dato queda 0 For i As Integer = 0 To primerArray.GetUpperBound(0) For j As Integer = 0 To primerArray.GetUpperBound(1) copiaPrimerArray(i, j) = primerArray(i, j) Next Next 'Copio el segundoArray en un array que tiene el tamao del array final 'En donde no hay dato queda 0 For i As Integer = 0 To segundoArray.GetUpperBound(0) For j As Integer = 0 To segundoArray.GetUpperBound(1) copiaSegundoArray(i, j) = segundoArray(i, j) Next Next 'En el array final coloco la suma de los dos arrays copiados For i As Integer = 0 To sumaArrays.GetUpperBound(0) For j As Integer = 0 To sumaArrays.GetUpperBound(1) sumaArrays(i, j) = copiaPrimerArray(i, j) + copiaSegundoArray(i, j) Next Next 'mostrar el array suma For i As Integer = 0 To sumaArrays.GetUpperBound(0) For j As Integer = 0 To sumaArrays.GetUpperBound(1) tbSumaArrays.Text += (sumaArrays(i, j)) & " " Next tbSumaArrays.Text &= ControlChars.CrLf Next End Sub