Ejercicios Resueltos de Pase de Arreglos como Parámetros
Enviado por zahymar • 16 de Septiembre de 2012 • 5.269 Palabras (22 Páginas) • 580 Visitas
Ejercicios Resueltos de Pase de Arreglos como Parámetros
Ejercicio Nº1: Elabore una aplicación en Visual Basic que permita desde el evento Cargar el Formulario (Form_load) los siguientes procedimientos generales:
1. Cargar una matriz cuadrada n*n con números aleatorios entre 10 y 50 en la diagonal principal y secundaria y en las demás posiciones múltiplos de 5 comenzando en 10.
2. Imprimir la matriz
3. Ordenar la matriz
4. Crear un vector con los valores del contorno de la matriz
5. Imprimir el vector
Nota: Utilice parámetros explícitos para este ejercicio
Para este ejercicio se colocara en el formulario dos listas: una para imprimir la matriz sin ordenar, y la otra lista para imprimir la matriz ordenada. También se necesitará una caja de texto para imprimir el vector; asimismo, tres etiquetas que servirán de encabezado indicando lo que se mostrará en cada lista y en la caja de texto. La apariencia de este formulario será similar a la mostrada a continuación:
Se realiza en el OPtion Explicit o en general la declaración de las variables i y j, además en el evento Form_Load() se realizarán los llamados a los procedimientos, señalados en el ejercicio, colocando parámetros explícitos para la carga de los arreglos, tal como se muestra a continuación:
DIM i as integer, j as integer
Private Sub Form_Load()
Dim A() As Integer, V() As Integer, V2() As Integer
Dim n As Integer, ctv As Integer
Do
N=val(inputbox("De el valor de n"))
Loop until n>0
Redim A(1 to n, 1 to n)
Call CargarM(A(), n)
Call Imprimir(A(), n)
Call Ordenar(A(), V2(), n) ‘V2 arreglo utilizado para ordenar los elementos de la matriz
Call CrearV(A(), V(), n, ctv) ‘ ctv es contiene de la cantidad de elementos del contorno
Call IMprimirv(V(), ctv)
End Sub
Es de resaltar que al llamar al procedimiento general CargarM se envió como parámetro la matriz, a la cual ya se le definió su dimensión, además del valor n. Esta matriz está vacía, es decir, todas las posiciones de la matriz tienen el valor cero, luego al retornar del procedimiento CargarM, la matriz tendrá los valores asignados en dicho procedimiento, ya que el paso del arreglo como parámetro es por referencia, es decir, que cualquier cambio realizado en el procedimiento es reflejado en el llamado a dicho procedimiento. La lógica de este procedimiento se muestra a continuación:
Sub CargarM(A() As Integer, n As Integer)
Dim c As Integer
Randomize
c = 5
For i = 1 To n
For j = 1 To n
If i = j Or i + j = n + 1 Then ‘ Carga con números aleatorios
A(i, j) = Int((50 - 10 + 1) * Rnd) + 10 ‘ en la diagonal principal y secundaria
Else
c = c + 5
A(i, j) = c ‘ Carga de las otras posiciones del arreglo con múltiplos de 5
End If
Next j
Next i
MsgBox "Matriz cargada"
End Sub
El procedimiento Imprimir muestra la matriz obtenida en la lista1
Sub Imprimir(A() As Integer, n As Integer)
Dim tira As String
Label1.Caption = "Elementos de la Matriz"
List1.Clear
For i = 1 To n
tira = ""
For j = 1 To n
tira = tira & A(i, j) & Space(4)
Next j
List1.AddItem tira
Next i
End Sub
En el procedimiento Ordenar se le envían como parámetros la matriz, el valor de n, y el vector V2 en el cual se colocará los elementos de la matriz para ordenarlo mediante el procedimiento burbuja, y luego pasar estos elementos nuevamente a la matriz. A continuación se presenta el código de este procedimiento:
Sub Ordenar(A() As Integer, V2() As Integer, n As Integer)
Dim k As Integer, aux As Integer, tira As String
ReDim V2(1 To n * n)
k = 1
For i = 1 To n
For j = 1 To n
V2(k) = A(i, j) ‘Paso de los elementos de la matriz al vector V2
k = k + 1
Next j
Next i
For i = 1 To n * n - 1
For j = 1 To n * n - i
If V2(j) > V2(j + 1) Then ‘ Ordenamiento de los elementos por Burbuja
aux = V2(j)
V2(j) = V2(j + 1)
V2(j + 1) = aux
End If
Next j
Next i
k = 1
For i = 1 To n
For j = 1 To n
A(i, j) = V2(k) ‘Pase de los elementos del vector V2 a la matriz
k = k + 1
Next j
Next i
MsgBox "Matriz Ordenada"
Label2.Caption = "Matriz Ordenada"
List2.Clear
For i = 1 To n
tira = ""
For j = 1 To n
tira = tira & A(i, j) & Space(4) ‘ Impresión de la matriz ordenada en la lista 2
Next j
List2.AddItem tira
Next i
End Sub
En el procedimiento Crear Vector(CreaarV) se envía como parámetro actual: la matriz, el vector, el valor de n y un contador que contendrá la cantidad de elementos que tendrá el vector, este último valor se envía con el valor cero y luego de retornar tendrá el número de elementos del vector. A continuación se muestra el código de este procedimiento:
Sub CrearV(A() As Integer, V() As Integer, n As Integer, ctv As Integer)
Dim k As Integer
For i = 1 To n
For j = 1 To n
If i = 1 Or i = n Or j = 1 Or j = n Then
ctv = ctv + 1 ‘ Se cuenta la cantidad de elementos de hay en el contorno de la matriz
End If
Next j
Next i
ReDim V(1 To ctv) ‘ Se redimensiona el vector con el valor del contador ctv
k = 1
For i = 1 To n
For j = 1 To n
If i = 1 Or i = n Or j = 1 Or j = n Then
V(k) = A(i, j) ‘ Se recorre nuevamente la matriz para almacenar en el vector los
k = k + 1 ‘ elementos que están en el contorno de la matriz
End If
Next j
Next i
MsgBox "Vector creado"
End Sub
En
...