Ejemplo de Arreglos

Anuncio
Lenguaje Programación II
Instituto Universitario
de Gerencia y Tecnología
Ejemplo de Arreglos
Caracas 15 de Mayo de 2009
Caracas
Caracas FC
El Caracas FC participa en 3 especialidades del futbol: F(Futbol), P(Futbol playa) y S(Futbol sala). El Club
participa tanto en torneos locales (TL) como torneos internacionales (TI) distribuidos de la siguiente forma: el
equipo F participa en 1 torneo local, 3 torneos internacionales; el equipo P participa en 2 torneos locales, 1
torneo internacional y el equipo S participa en 2 torneos locales, 2 torneo internacional.
Por cada torneos local e internacional el Club debe comprar una cantidad de juegos de uniforme tanto como
local (cuando juega en casa - UL) como visitante (cuando juega en la casa del equipo contrario - UV). Para los
torneos locales se utilizan 20 uniformes de local y 12 uniformes de visitante; para los internacionales se utilizan
10 uniformes de local y 6 uniformes de visitante. Se desea:
1. Escribir una matriz que describa la cantidad y tipo de torneo en cada especialidad y otra matriz que
exprese el número de uniformes locales y visitantes de cada torneo.
2. Calcular una matriz, a partir de las anteriores, que exprese la cantidad total de uniformes utilizados,
tanto locales como visitantes, en cada especialidad.
3. Determinar la cantidad total de uniformes por cada especialidad y la cantidad total de uniformes de
locales y uniformes de visitantes utilizadas en la participación de todos los torneos.
4. ¿Que especialidad posee la mayor cantidad de uniformes y que tipo de uniforme posee el mayor uso?
1
Caso de Uso
2
Diagrama de Clases
3
Código fuente
Public Class Arreglos
Private fila As Integer
Private columna As Integer
Private profundidad As Integer
Private f As Integer
Private c As Integer
Private p As Integer
' Método que llena un arreglo de 1 dimensión
Public Function llenarVector(ByVal vector As Array) As Array
' Se determina las dimensiones del arreglo mediante
' el método GetUpperBound
' (0) fila
Me.fila = vector.GetUpperBound(0)
' se recorre el arreglo y se llena
For Me.f = 0 To Me.fila
Console.Write("ingrese valor (" + Me.f.ToString + "): ")
vector(Me.f) = Console.ReadLine
Next Me.f
Return vector
End Function
' Método que llena un arreglo de 2 dimensiones
Public Function llenarMatriz(ByVal matriz As Array) As Array
' Se determina las dimensiones del arreglo mediante
' el método GetUpperBound
' (0) fila
' (1) columna
Me.fila = matriz.GetUpperBound(0)
Me.columna = matriz.GetUpperBound(1)
' se recorre el arreglo y se llena
For Me.f = 0 To Me.fila
For Me.c = 0 To columna
Console.Write("ingrese valor (" + Me.f.ToString + "," _
+ Me.c.ToString + "): ")
matriz(Me.f, Me.c) = Console.ReadLine
Next Me.c
Next Me.f
Return matriz
End Function
4
' Método que llena un arreglo de 3 dimensiones
Public Function llenarCubo(ByVal cubo As Array) As Array
' se determina las dimensiones del cubo mediante
' el método GetUpperBound
' (0) fila
' (1) columna
' (2) profundidad
Me.fila = cubo.GetUpperBound(0)
Me.columna = cubo.GetUpperBound(1)
Me.profundidad = cubo.GetUpperBound(2)
' Se recorre el arreglo y se llena
For Me.p = 0 To Me.profundidad
For Me.f = 0 To Me.fila
For Me.c = 0 To Me.columna
Console.Write("ingrese valor (" + Me.f.ToString + "," _
+ Me.c.ToString + "," _
+ Me.p.ToString + "): ")
cubo(Me.f, Me.c, Me.p) = Console.ReadLine
Next Me.c
Next Me.f
Next Me.p
Return cubo
End Function
' método que muestra el contenido de un arreglo de 2 dimensiones
Public Sub mostrarMatriz(ByVal matriz As Array)
Me.fila = matriz.GetUpperBound(0)
Me.columna = matriz.GetUpperBound(1)
For Me.f = 0 To Me.fila
For Me.c = 0 To Me.columna
Console.Write(matriz(Me.f, Me.c).ToString + " ")
Next Me.c
Console.WriteLine()
Next Me.f
End Sub
End Class
5
Public Class Futbol
Private uniforme As Integer
Private especialidad As Integer
Private torneo As Integer
Private u As Integer
Private e As Integer
Private t As Integer
Private total As Integer
Private mayor As Integer
Public Function calcularUE(ByVal TU As Array, _
ByVal TE As Array) As Array
Me.torneo = TU.GetUpperBound(0)
Me.uniforme = TU.GetUpperBound(1)
Me.especialidad = TE.GetUpperBound(1)
' matriz resultante
Dim UE(uniforme, especialidad) As Integer
For Me.t = 0 To Me.torneo
For Me.u = 0 To Me.uniforme
For Me.e = 0 To Me.especialidad
UE(Me.u, Me.e) += TU(Me.t, Me.u) * TE(Me.t, Me.e)
Next Me.e
Next Me.u
Next Me.t
Return UE
End Function
Public Sub totalUniformeEspecilidad(ByVal UE As Array)
Me.uniforme = UE.GetUpperBound(0)
Me.especialidad = UE.GetUpperBound(1)
For Me.e = 0 To especialidad
Me.total = 0
For Me.u = 0 To uniforme
Me.total += UE(Me.u, Me.e)
Next Me.u
Console.WriteLine("Total uniformes por la especialidad " _
+ Me.e.ToString + " es: " _
+ Me.total.ToString)
Next Me.e
End Sub
6
Public Sub totalUniformesTipo(ByVal UE As Array)
Me.uniforme = UE.GetUpperBound(0)
Me.especialidad = UE.GetUpperBound(1)
For Me.u = 0 To Me.uniforme
Me.total = 0
For Me.e = 0 To Me.especialidad
Me.total = Me.total + UE(Me.u, Me.e)
Next Me.e
Console.WriteLine("Total uniformes " _
+ Me.e.ToString + " es: " _
+ Me.total.ToString)
Next Me.u
End Sub
Public Sub especialidadMayorUso(ByVal UE As Array)
Dim mayorEspecialidad As Integer
Me.uniforme = UE.GetUpperBound(0)
Me.especialidad = UE.GetUpperBound(1)
For Me.e = 0 To Me.especialidad
Me.total = 0
For Me.u = 0 To Me.uniforme
total += UE(Me.u, Me.e)
Next u
If Me.total > Me.mayor Then
Me.mayor = Me.total
mayorEspecialidad = Me.e
End If
Next Me.e
Console.WriteLine("La especialidad " _
+ mayorEspecialidad.ToString + _
" posee la mayor catidad de uniformes con un total de: "
_
+ Me.mayor.ToString)
End Sub
7
Public Sub uniformeMayorUso(ByVal UE As Array)
Dim mayorUniforme As Integer
Me.uniforme = UE.GetUpperBound(0)
Me.especialidad = UE.GetUpperBound(1)
For Me.u = 0 To Me.uniforme
Me.total = 0
For Me.e = 0 To Me.especialidad
Me.total += UE(Me.u, Me.e)
Next Me.e
If Me.total > Me.mayor Then
Me.mayor = Me.total
mayorUniforme = Me.u
End If
Next Me.u
Console.WriteLine("El uniforme " + mayorUniforme.ToString + _
" es el mas usado con un total de: " _
+ Me.mayor.ToString)
End Sub
End Class
8
Module Modulo
Private
Private
' fila:
Private
' fila:
Private
' fila:
Private
caracasFC As New Futbol
operacionesArreglos As New Arreglos
Torneo, columna: Uniforme
torneoUniforme(1, 1) As Integer
Torneo, columna: Especialidad
torneoEspecialidad(1, 2) As Integer
Uniforme, columna: Especialidad
uniformeEspecialidad(1, 2) As Integer
Sub Main()
llenarTorneoUniforme()
llenarTorneoEspecialidad()
calcularUniformeEspecialidad()
totalUniformeEspecilidad()
totalUniformesTipo()
especialidadMayorUso()
uniformeMayorUso()
Console.ReadLine()
End Sub
Private Sub llenarTorneoUniforme()
' matriz que expresa el número de uniformes locales y visitantes
' de cada especialidad.
Console.WriteLine("Torneo - Uniforme")
torneoUniforme = operacionesArreglos.llenarMatriz(torneoUniforme)
'caracasFC.mostrar(torneoUniforme)
End Sub
Private Sub llenarTorneoEspecialidad()
' matriz que expresa el cantidad y tipo de torneo en cada especialidad.
Console.WriteLine()
Console.WriteLine("Torneo - Especialidad")
torneoEspecialidad = operacionesArreglos.llenarMatriz(torneoEspecialidad)
'caracasFC.mostrar(torneoEspecialidad)
End Sub
Private Sub calcularUniformeEspecialidad()
' matriz que expresa la cantidad total de uniformes utilizados,
' tanto locales como visitantes, en cada especialidad.
Console.WriteLine()
Console.WriteLine("Uniforme - Especialidad")
uniformeEspecialidad = caracasFC.calcularUE(torneoUniforme,
torneoEspecialidad)
'caracasFC.mostrar(uniformeEspecialidad)
End Sub
Private Sub totalUniformeEspecilidad()
' Cantidad total de uniformes por cada especialidad.
Console.WriteLine()
caracasFC.totalUniformeEspecilidad(uniformeEspecialidad)
End Sub
9
Private Sub totalUniformesTipo()
' Cantidad total de uniformes de locales y uniformes de visitantes
' utilizadas en la participación de todos los torneos.
Console.WriteLine()
caracasFC.totalUniformesTipo(uniformeEspecialidad)
End Sub
Private Sub especialidadMayorUso()
' especialidad posee la mayor cantidad de uniformes
Console.WriteLine()
caracasFC.especialidadMayorUso(uniformeEspecialidad)
End Sub
Private Sub uniformeMayorUso()
' tipo de uniforme con mayor uso
Console.WriteLine()
caracasFC.uniformeMayorUso(uniformeEspecialidad)
End Sub
End Module
10
Descargar