Sei sulla pagina 1di 6

UNIVERSIDAD DE CARABOBO - FACULTAD DE INGENIERÍA.

- DEPARTAMENTO DE COMPUTACIÓN
CÁTEDRA DE COMPUTACIÓN II - PRIMER PERIODO LECTIVO DE 2018.

Nombre: Semestre 1-2018 04 de Mayo de 2018


Cedula:
Sección: Ev. Complementaria I (5%) Calificación:

RECIPIENTES DE GAS
Una empresa distribuidora de gas realiza una licitación pública para la construcción de
tanques de acero con la forma de un cilindro circular recto con semiesferas en los
extremos (ver figura) para almacenar gas propano. Para el control de cada una de las
propuestas recibidas la empresa cuenta con un archivo de nombre “propuestas.txt”
como los siguientes datos:

Código y Nombre del proveedor, Fecha de la propuesta, el radio (R) de la esfera


(pies) y la longitud (L) del cilindro circular recto (pies)
Requerimientos (12 ptos.)
(2 ptos.) Estructura que incluya los datos de un archivo secuencial y permita abrirlo para lectura y para escritura,
y cerrarlo.
(2 ptos.) Estructura que incluya los datos de una esfera y permita determinar su volumen y área.
(2 ptos.) Estructura que incluya los datos de un cilindro circular recto y permita determinar su volumen y área.
(2 ptos.) Estructura que incluya los datos de un recipiente de gas empleando las dos estructuras anteriores y que
permita determinar su volumen y área.
(4 ptos.) Estructura que incluya los datos de una propuesta (además del costo por metro cuadrado de acero)
empleando la estructura anterior, permita leer desde un archivo sus datos y, determinar su volumen y costo.
Enunciado (8 ptos.)
Desarrollar una aplicación de consola VB2010 que permita procesar la información indicada, determine e imprima
por consola:

Para cada propuesta:


1. Volumen del recipiente en pies cúbicos (1 pto.)
2. Costo del recipiente en bolívares (1 pto.)

Para todas las propuestas:


1. Porcentaje de propuestas que no cumplieron con el volumen deseado por la empresa con respecto al total de
propuestas (2 ptos.)
2. Promedio del costo en bolívares de las propuestas que cumplieron con el volumen deseado (2 ptos.)
3. Nombre del proveedor con la propuesta más temprana. (2 ptos.)
Consideraciones
• La cantidad de propuestas recibida por la empresa distribuidora de gas es desconocida.
• El volumen deseado por la empresa para los tanques es de entre 30 y 35 pies cúbicos
• El costo por metro cuadrado de acero para elaborar los tanques es de Bs. 2500
3 2
• Volumen de la esfera = (4/3)πR , volumen del cilindro = πR L.
• Área de la esfera = 4πR2 , área del cilindro = 2πRL
• Un pie equivale a 0.3048 metros.
Ejemplos
“propuestas.txt”
01, Que Tanque, 02/05/2018, 1.0, 1.0
02, Más Tanque, 03/05/2018, 1.0, 1.1
03, Puro Gas , 04/05/2018, 1.5, 1.0
04, Recipiente, 05/05/2018, 1.5, 2.0
05, Ese Tanque, 06/05/2018, 1.5, 2.5
06, Gas y Gas , 07/05/2018, 1.5, 2.7
07, Mejora Gas, 08/05/2018, 1.5, 3.0
08, Gas Tanque, 09/05/2018, 2.0, 1.0
09, GasRecTanq, 10/05/2018, 2.0, 2.0
10, Solo Gas , 11/05/2018, 2.5, 2.0
UNIVERSIDAD DE CARABOBO - FACULTAD DE INGENIERÍA. - DEPARTAMENTO DE COMPUTACIÓN
CÁTEDRA DE COMPUTACIÓN II - PRIMER PERIODO LECTIVO DE 2018.

ANÁLISIS

¿Qué nos dan? ENTRADA


Por cada propuesta
• Código de la propuesta
• Nombre del proveedor
• Fecha de la propuesta
• Radio (R) de la esfera (pies)
• Longitud (L) del cilindro recto (pies)
Se desconoce la cantidad de propuestas
Volumen deseado entre 30 y 35 pies cúbicos
Costo metro cuadrado de acero Bs. 2500

¿Qué nos piden? SALIDA


Para cada propuesta
• Volumen del recipiente en pies cúbicos
• Costo del recipiente en bolívares
Para todas las propuestas
• Porcentaje de propuestas que NO cumplieron con el volumen deseado
• Promedio del costo en bolívares de las propuestas que cumplieron con el volumen deseado
• Nombre del proveedor con la propuesta más temprana
¿Cómo lograrlo? PROCESO
• Determinar el volumen y costo del recipiente
• Actualizar acumuladores, contadores y banderas cuando corresponda
• Algoritmo del mínimo con datos asociados:
Dato clave: fecha
Datos asociados: nombre del proveedor
• Repetir el proceso anterior hasta agotar las propuestas
• porc = cpnocumple / cpropuestas * 100
• prom = suma / cpsicumple

PROGRAMA
'Programa que determina el volumen y costo de recipientes para gas
'y estadísticas sobe ellos
'Elaborado por: J. Muñoz Fecha: 01-05-2018
Module Module1
'DECLARACIÓN de estucturas
Structure archivo
Dim na As Integer
Dim nomba As String
Sub abriral(ByVal na As Integer, ByVal nomba As String)
FileOpen(na, nomba, OpenMode.Input)
End Sub
Sub abrirae(ByVal na As Integer, ByVal nomba As String)
FileOpen(na, nomba, OpenMode.Output)
End Sub
Sub cerrara(ByVal na As Integer)
FileClose(na)
End Sub
End Structure
Structure esfera
Dim r As Single
Function vol(ByVal r As Single) As Single
vol = (4 / 3 * 3.14 * r ^ 3)
End Function
UNIVERSIDAD DE CARABOBO - FACULTAD DE INGENIERÍA. - DEPARTAMENTO DE COMPUTACIÓN
CÁTEDRA DE COMPUTACIÓN II - PRIMER PERIODO LECTIVO DE 2018.

Function area(ByVal r As Single) As Single


area = 4 * 3.14 * (r * 0.3048) ^ 2
End Function
End Structure
Structure cilindro
Dim r, l As Single
Function vol(ByVal r As Single, ByVal l As Single) As Single
vol = 3.14 * r ^ 2 * l
End Function
Function area(ByVal r As Single, ByVal l As Single) As Single
area = 2 * 3.14 * r * 0.3048 * l * 0.3048
End Function
End Structure
Structure recipiente
Dim e As esfera
Dim c As cilindro
Function vol(ByVal r As Single, ByVal l As Single) As Single
vol = e.vol(r) + c.vol(r, l)
End Function
Function area(ByVal r As Single, ByVal l As Single) As Single
area = e.area(r) + c.area(r, l)
End Function
End Structure
Structure propuesta
Dim nro As Integer
Dim proveedor As String
Dim fecha As Date
Dim cm2 As Single
Dim rec As recipiente
'Sub leer(ByVal na As Integer, ByRef nro As Integer, ByRef proveedor As String, ByRef
fecha As Date, ByRef r As Single, ByRef l As Single)
Sub leer(ByVal na As Integer, ByRef pro As propuesta)
With pro
Input(na, .nro)
Input(na, .proveedor)
Input(na, .fecha)
Input(na, .rec.e.r)
Input(na, .rec.c.l)
End With
End Sub
Function costo(ByVal r As Single, ByVal l As Single, ByVal cm2 As Single) As Single
costo = rec.area(r, l) * cm2
End Function
End Structure

Sub Main()
'DECLARACIÓN de variables
'Var. de ENTRADA
Dim arch As archivo
Dim prop As propuesta
'Var. de SALIDA
Dim provmin As String
Dim porc, prom As Single
'Var. de PROCESO
Dim fechamin As Date
Dim cpnocumple, cpsicumple, cpropuestas As Integer
Dim band As Integer
Dim suma As Single
'APERTURA de archivos
UNIVERSIDAD DE CARABOBO - FACULTAD DE INGENIERÍA. - DEPARTAMENTO DE COMPUTACIÓN
CÁTEDRA DE COMPUTACIÓN II - PRIMER PERIODO LECTIVO DE 2018.

arch.abriral(1, "propuestas.txt")
'FileOpen(1, "propuestas.txt", OpenMode.Input)
'INICIALIZACIÓN de variables
cpnocumple = 0 : cpsicumple = 0 : cpropuestas = 0
suma = 0 : band = 0
'ESCRITURA de resultados
Console.WriteLine("Nro. Proveedor Volumen Costo Cumple")
Console.WriteLine("==== ========== ======= ===== ======")
'PROCESAMIENTO de datos
While Not EOF(1)
With prop
'LECTURA de datos
.leer(1, prop)
cpropuestas = cpropuestas + 1
'ESCRITURA de resultados
Console.Write(Format(.nro, " 0# ") & .proveedor.PadRight(10))
Console.Write(Format(.rec.vol(.rec.e.r, .rec.c.l), " ####.00").PadLeft(10))
Console.Write(Format(.costo(.rec.e.r, .rec.c.l, 2500), " ####.00").PadLeft(10))
If .rec.vol(.rec.e.r, .rec.c.l) >= 30 And .rec.vol(.rec.e.r, .rec.c.l) <= 35
Then
cpsicumple = cpsicumple + 1
suma = suma + .costo(.rec.e.r, .rec.c.l, 2500)
Console.WriteLine(" ok")
Else
cpnocumple = cpnocumple + 1
Console.WriteLine(" x")
End If
If band = 0 Then
fechamin = .fecha
provmin = .proveedor
band = 1
Else
If .fecha < fechamin Then
fechamin = .fecha
provmin = .proveedor
End If
End If
End With
End While
porc = cpnocumple / cpropuestas * 100
'ESCRITURA de resultados
Console.WriteLine()
Console.WriteLine("Porcentaje de propuestas que NO cumplen: " & porc & "%")
If cpsicumple > 0 Then
prom = suma / cpsicumple
Console.WriteLine("Promedio del costo de las propuestas que cumplen: Bs." & prom)
Else
Console.WriteLine("No hay propuestas que cumplen")
End If
Console.WriteLine("Proveedo con la propuesta más temprana: " & provmin)
'CIERRE de archivos
arch.cerrara(1)
Console.ReadKey() 'Pausa
End Sub

End Module
UNIVERSIDAD DE CARABOBO - FACULTAD DE INGENIERÍA. - DEPARTAMENTO DE COMPUTACIÓN
CÁTEDRA DE COMPUTACIÓN II - PRIMER PERIODO LECTIVO DE 2018.

“propuestas.txt”
01, Que Tanque, 02/05/2018,1.0, 1.0
02, Más Tanque, 03/05/2018,1.0, 1.1
03, Puro Gas , 04/05/2018,1.5, 1.0
04, Recipiente, 05/05/2018,1.5, 2.0
05, Ese Tanque, 06/05/2018,1.5, 2.5
06, Gas y Gas , 07/05/2018,1.5, 2.7
07, Mejora Gas, 08/05/2018,1.5, 3.0
08, Gas Tanque, 09/05/2018,2.0, 1.0
09, GasRecTanq, 10/05/2018,2.0, 2.0
10, Solo Gas , 11/05/2018,2.5, 2.0

EJECUCIÓN 1

NOTA: recuerde, antes de “correr” el programa, elaborar (con el programa Bloc de notas u
otro editor de texto) el archivo “propuestas.txt” y ubicarlo en la carpeta Debug de su
proyecto.
Documentos – Visual Studio 2010 – Projects – Su proyecto – Su proyecto - bin - Debug

NOTA: recuerde ejecutar “correr” el programa PASO a PASO empleando para ello la tecla F8 y
así poder observar como se ejecuta cada instrucción del programa una por una.

NOTA: durante la ejecución PASO a PASO (F8) haga clic en el botón Variables locales
(Ctr+Alt+V, L), ver figura, para observar los valores que toman las variables durante la
ejecución del programa.

NOTA: realice la Corrida en frio tal como se desarrollo en clase, compárela con la ejecución
PASO a PASO (F8) y con los valores que toman las variables (Variables locales) durante la
UNIVERSIDAD DE CARABOBO - FACULTAD DE INGENIERÍA. - DEPARTAMENTO DE COMPUTACIÓN
CÁTEDRA DE COMPUTACIÓN II - PRIMER PERIODO LECTIVO DE 2018.

ejecución del programa. Verifique finalmente los resultados finales del programa con sus
propios cálculos, para así validar estos y la efectividad del programa.

Potrebbero piacerti anche