Universidad de Costa Rica. Escuela de Computación. CI-0202 Principios de informática
2018a. Grupo 04.
Examen 03 [12-Jul-2018]. Profesor
Jeisson Hidalgo-Céspedes.
---
# Exportación de fruta
Una empresa familiar de la zona sur del país apostó por la exportación del rambután (mamón chino). Desde hace varios años han ido cultivando parcelas con arbolitos y por tanto sus cosechas crecen año con año. Durante algún tiempo han tenido utilidades favorables dado que la demanda internacional del producto es considerable. Sin embargo, parece que este panorama favorable se ve amenazado por productores de otros países que incrementan la oferta. Se sospecha que las cualidades para considerar "producto de exportación" podrían cambiar para el próximo año.
Supóngase que hasta el 2018 se ha considerado el rambután como producto de exportación si es injertado y tiene una circunferencia igual o superior a 9cm. Sin embargo, dada la oferta internacional, se cree que estos lineamientos podrían subir la circunferencia mínima a 10.5cm.
La familia productora quiere saber cómo este cambio podría afectar sus finanzas a partir del próximo año. Dado que la promotora de comercio exterior lo exige, ellos tienen registros de mediciones del producto. Cada vez que se cosecha una parcela, los frutos son clasificados visualmente por su tamaño en lotes. En cada lote varios frutos son "muestreados" al azar, y se les mide su circunferencia. Si el promedio de la circunferencia equipara o supera los estándares internacionales, el lote de 40kg se exporta a 9 dólares el kilogramo, sino, es colocado en el mercado local a 1.5 dólares el kilogramo.
Escriba un programa que ayude a la familia a calcular las utilidades a partir de los registros. La siguiente tabla resume el cálculo del precio de un lote. Si el lote se vendió en el año 2018 o antes, aplicarán las reglas actuales. Es decir, si el promedio de circunferencia de las muestras del lote es 9.0 o más, el lote se exporta a un precio de 9 dólares por kilogramo, de lo contrario, se vende localmente a 1.5 dólares el kilogramo. Pero si el lote es una estimación (año 2019 en adelante), su precio se calculará con las reglas nuevas. Es decir, si el promedio de la circunferencia de la fruta en el lote es 10.5 o más, se venderá en el mercado internacional a 7.5 dólares el kilogramo, de lo contrario, se colocará en el mercado local a 1.5 dólares el kilogramo.
|Año |Circunferencia|PrecioInternacional|PrecioLocal|
|-----|--------------|-------------------|-----------|
|2018-| 9.0 | 9 | 1.5 |
|2019+| 10.5 | 7.5 | 1.5 |
Los datos a analizar se encuentran en un archivo `datos.csv` en formato de archivo de valores separados por tabuladores (o espacios). Su programa debe abrir este archivo, el cual consta de cuatro columnas:
1. El identificador del lote
2. El año en que la muestra fue tomada (`ANNO`).
3. El número de muestra dentro del lote (`MUESTRA`)
4. La medición en centímetros de la muestra (`CIRCUNF`)
La primera línea del archivo almacena un encabezado con etiquetas para cada columna. El primer número en esta primera fila indica la cantidad de lotes que se quieren analizar. En el ejemplo de entrada son 5 lotes, identificados de 1 a 5.
Para cada lote se especifica su identificador, el año en que se cosechó, y varias muestras. Una muestra corresponde a un fruto del lote que fue escogido al azar y fue medido. En el archivo, una muestra tiene un número que la distingue dentro del lote y la medición de su circunferencia en centímetros. Se sabe que los datos en el archivo de entrada está ordenados ascendentemente por fecha de recolección de las muestras.
**Ejemplo de entrada**:
5 ANNO MUESTRA CIRCUNF
1 2017 1 11.2
1 2017 2 8.7
2 2018 1 7.3
3 2018 1 13.8
3 2018 2 12.0
4 2019 1 9.2
4 2019 2 10.8
5 2019 1 9.3
5 2019 2 14.4
5 2019 3 9.8
**Ejemplo de salida**:
ANNO INTERN LOCAL TOTAL
2017 360 0 360
2018 360 60 420
2019 300 60 360
TOTAL 1020 120 1140
La información que la pequeña empresa necesita, corresponde a los montos de dinero en dólares vendidos por año, separados por ventas en el mercado internacional y local. De acuerdo al pequeño ejemplo de entrada, para el año 2017 se cosechó un lote (identificado `1`) cuyas muestras tuvieron un promedio de `(11.2 + 8.7)/2 = 9.95`, por tanto superó el mínimo internacional de ese año (9.0) y se pudo colocar en el mercado internacional por 9 dólares el kilogramo. Como es un lote de 40 kilogramos, generó una ganancia de `40 * 9 = 360` dólares.
## Evaluación
1. [20%] Implementa una clase controladora (ej: `Produccion`, `Exportacion`, `EmpresaExportadora` o `Solution`). La clase tiene como atributo una colección de lotes.
2. [30%] La clase controladora tiene subrutinas que inician la ejecución del programa (`main()`), abre el archivo de datos, lee el encabezado, crea los lotes, delega la lectura de los lotes a la clase `Lote`, imprime los resultados en la salida estándar (encabezado y totales), delega el cálculo de las ganancias a los lotes.
3. [20%] Implementa una clase modelo `Lote`. El lote tiene atributos que le permiten realizar los cálculos siguentes.
4. [30%] El lote es capaz de leerse desde el archivo de entrada, guardar valores para realizar los cálculos posteriores, calcular el promedio de las circunferencias de las muestras, calcular el dinero ganado por la venta del lote sea en el mercado local o internacional.
5. [10% extra] Transcribe su solución a HackerRank y la corrige para pasar los casos de prueba.
En todos los rubros anteriores se envaluarán la buenas prácticas de programación: identificadores significativos, indentación (sangría), y paréntesis balanceados.