ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Ejercicios Resueltos de Pase de Arreglos como Parámetros


Enviado por   •  16 de Septiembre de 2012  •  5.269 Palabras (22 Páginas)  •  508 Visitas

Página 1 de 22

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

...

Descargar como (para miembros actualizados)  txt (25 Kb)  
Leer 21 páginas más »
Disponible sólo en Clubensayos.com