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

Ejercicios Resueltos de Pase de Arreglos como Parámetros

zahymar16 de Septiembre de 2012

5.269 Palabras (22 Páginas)617 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 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:

...

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