¿Cómo recorrer múltiples matrices?
Pregunta
Soy nuevo en esto, lo siento si mi pregunta ya se ha hecho antes. He buscado pero no he podido encontrar, o tal vez reconocer, una respuesta. Estoy usando Visual Studio 2008 y estoy creando una aplicación en vb.net.
Tengo 4 matrices llamadas: - cuenta1 cuenta2 cuenta3 cuenta4. Todos tienen 4 elementos. Quiero asignar valores a los elementos en las matrices de manera eficiente. Pensé que dos para los siguientes bucles lo harían. Mi pseudocódigo se parece a esto
for i=1 to 4
for c= 0 to 3
account(i)(c)= 'mydata' /so account(i) would be account1 etc and c the element
next c
next i
y, por lo tanto, todos los elementos de todas las matrices se completan sin que tenga que configurar un bucle fornext para cada nombre de matriz individual. ¿Cómo puedo lograr esto, por favor?
Espero haber proporcionado suficiente información para ser útil, y que pueda ayudar. Gracias por todo y cualquier consejo.
Solución
Si entiendo correctamente, ¿por qué no?
For i as integer = 0 to 3
account1(i) = "Account1"
account2(i) = "Account2"
account3(i) = "Account3"
account4(i) = "Account4"
Next
Edite VB.Net para la respuesta de Qua :
dim accounts(4,4) as integer
for i as integer = 0 To accounts.GetUpperBound(0)
for j as integer = 0 To accounts.GetUpperBound(1)
accounts(i, j) = new integer 'not needed for intergers, but if you had a class in here'
accounts(i, j) = i*j;
next
next
Otros consejos
Debería crear una matriz multidimensional en lugar de 4 matrices, que le permitiría recorrer genéricamente las matrices.
int[,] accounts = new int[4,4] // 4 accounts with 4 elements
for (int i = 0 ; i < accounts.GetUpperBound(0); i++)
for (int j = 0 ; i < accounts.GetUpperBound(1); j++)
accounts[i,j] = i*j;
next
next
Mientras leo su ejemplo de código, no creo que necesite usar 2 bucles separados, como si tuviera razón, está asignando el mismo valor a la posición i-ésima de su matriz por ejemplo:
matriz1 (i) = matriz2 (i) = matriz3 (i) = matriz4 (i)
En su ejemplo anterior, podría escribir algo como esto (en pseudocódigo):
for i = 0 to 3
account1(i) = MyData
account2(i) = MyData
account3(i) = MyData
account4(i) = MyData
next i
Creo que esto es más claro que intentar escribir un bucle para los nombres de las variables, especialmente para la cantidad de matrices que está manteniendo
Otra opción, que podría ser más apropiada si tiene muchas matrices, sería mantener una lista de matrices que luego se pueda iterar de manera bastante simple.
PseudoCode para esta opción:
for each array in listOfArrays
for i = 0 to 3
array(i) = MyData
next i
next
Esto es definitivamente más claro que tratar de generar dinámicamente los nombres de las matrices, y también es más fácil de mantener