Ejercicios Resueltos de Pase de Arreglos como Parámetros
zahymar16 de Septiembre de 2012
5.269 Palabras (22 Páginas)617 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 el procedimiento ImprimirV se imprime el vector en la caja de texto 1, para lo cual se envía como parámetros actuales el Vector y el contador ctv, el cual señala la cantidad de elementos que tiene el vector. Su código es el siguiente:
Sub IMprimirv(V() As Integer, ctv As Integer)
Label3.Caption = "Elementos del Vector"
Text1.Text = ""
‘ Se recorre el vector desde 1 hasta ctv que es la cantidad de elementos del vector
For i = 1 To ctv
Text1.Text = Text1.Text & V(i) & Space(3)
Next i
End Sub
La apariencia del formulario al realizar la corrida de esta aplicación es similar a la mostrada a continuación:
Ejercicio Nº2: Elabore una aplicación en Visual Basic que permita desde el evento Cargar el formulario activar los siguientes procedimientos generales:
1. Cargar :Mediante un SUB cargue de forma general la siguiente matriz cuadrada N*N, donde N debe ser impar y mayor o igual a 3:
1 2 3 4 5
1 0 NA -2 NA -4
2 1 0 -1 -2 -3
3 NA NA NA NA NA
4 3 2 1 0 -1
5 4 NA 2 NA 0
NA: es un número aleatorio entre 20 y 80
2. CrearV1: Mediante un SUB cree un vector con la siguiente información
1. donde las primeras posiciones del vector serán la cantidad de múltiplos de 3 que exista en cada columna.
2. La siguiente posición cantidad de números pares que hay en la mitad de las filas.
3. La cantidad de números negativos que hay en la matriz.
3. Imprimir: Mediante un SUB mostrar en objetos apropiados la matriz y el vector.
4. Calcular: Mediante una Function calcular el mayor elemento aleatorio de la matriz.
Nota: Utilice parámetros explícitos para este ejercicio
Para esta aplicación se colocará en la declaración general el valor de i y j, ya que se utilizarán en todos los procedimientos, luego en el evento Form_Load() se realiza el llamado a los procedimientos solicitados en este ejercicio.
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, ct As Integer
Call CargarM(A(), n)
Call CrearV(A(), V(), n)
Call Imprimir(A(), V(), n)
ct = Calcular(A(), n)
Text2.Text = "La mayor elemento aleatorio de la matriz es " & ct
End Sub
Al procedimiento CargarM se envían como parâmetros actuales la matriz y el valor de n, en los cuales se retornará la matriz cargada con los valores solicitados en el problema. Su código es el siguiente:
...