Está en la página 1de 26

PRACTICA_5

Universidad Enunciado Ejercicio Práctico Departamento de


Nacional de Ingeniería de Software y
Educación a
SEPTIEMBRE Sistemas Informáticos
Distancia Curso 2020/2021
Fundamentos de Programación

Curso 2020-2021

ÍNDICE

INTRODUCCIÓN .................................................................................................................. 2
ENUNCIADO ........................................................................................................................ 3
EJEMPLO DE OPERACIONES ............................................................................................ 5
ENTREGABLES Y PLAZOS .............................................................................................. 17
APARTADOS DE LA MEMORIA ..................................................................................... 19
EVALUACIÓN .................................................................................................................... 21
ANEXO 1. INSTALACIÓN DE LA LIBRERÍA BGI Graphic Emulation ......................... 23
ANEXO 2. DIA EN CURSO ............................................................................................... 26
INTRODUCCIÓN

A la vista de la publicación del Acuerdo del Consejo de Gobierno de la UNED


por el que se establecen medidas relativas al desarrollo de las pruebas presenciales
(exámenes), en la próxima convocatoria extraordinaria de septiembre del curso
2020/21 y con carácter excepcional, la prueba de evaluación consistirá en la
programación con C+/- del sistema que se describe a continuación y la elaboración
de una MEMORIA de documentación y pruebas del trabajo realizado.

Para la realización de este enunciado es imprescindible la resolución de las


prácticas autocorregidas de las tres pruebas de evaluación continua y la cuarta
práctica que se han planteado en la asignatura.
ENUNCIADO

Realizar un programa en C+/- que gestione el mantenimiento de los drones para la


distribución de fármacos: Mantener_FarmaDron.

Este ejercicio debe reutilizar OBLIGATORIAMENTE el código de la solución de la


cuarta práctica del curso.

Mantener_FarmaDron realiza operaciones de mantenimiento de los drones (15


drones como máximo) utilizados en la distribución de un único almacén de
fármacos (FarmaDron de la práctica 4).

Al arrancar el programa se debe incorporar automáticamente unos datos iniciales


sobre:

• La descripción del almacén (cadena de texto) y el dato con la altura sobre el


nivel del mar del almacén (valor entero).
• Los datos para al menos 5 pacientes (nombre, coordenadas y altura sobre
el nivel del mar de su ubicación).
• Las características de al menos 20 pedidos (número de envíos, fecha del
envío o del primer envío, y denominación de los fármacos, sus pesos en
gramos y el número de unidades que forman parte del envío) sobre al menos
3 de los pacientes ya creados.
• Datos sobre al menos tres drones ya usados en el almacén (con datos de
identificación y kilómetros recorridos).

Un dron del almacén se identificará por:


• Número de Serie: Tres letras más cuatro números, por ejemplo: ABC 9876.
• Alias: Cadena de texto de al menos 10 caracteres, por ejemplo “Pepedron”.

Y además se debe tener los siguientes datos de cada uno de ellos:


• Número total de kilómetros horizontales recorridos.
• Número total de metros verticales recorridos.
• Kilómetros entre revisiones del motor de desplazamiento horizontal.
• Metros entre revisiones del motor de desplazamiento vertical.

SUBPROGRAMA DESCRIPCIÓN
0. IniciarGestion Inicializa el sistema Mantener_FarmaDron
con una información mínima de arranque
que se ha definido en el párrafo anterior:

.- 5 pacientes del almacén.

.- 20 pedidos sobre al menos 3 pacientes.

- 3 drones.

Esta operación se realizará en el inicio de la


aplicación y sin la intervención del usuario.

1. ListarAlmacen Muestra por pantalla toda la información del


almacén.

2. AltaDron Permite dar de alta a un nuevo dron en el


almacén. Si todos los drones están
ocupados, se eliminará el dron con más
kilómetros totales recorridos. El nuevo dron
se puede almacenar con valores de
distancias recorridas cero o con datos
históricos previos si el nuevo dron es de
segunda mano.

3. AltaPaciente Permite dar de alta a un nuevo paciente en


el almacén. El formato de datos será el
mismo que el utilizado en la práctica 4 más
la lectura de la altura sobre el nivel del mar
de la ubicación del paciente.

4. BajaDron Permite dar de baja un dron que ha dejado


de operar en el almacén.

5. NuevoPedido Permite realizar un nuevo pedido para un


paciente del almacén, puntual o periódico,
de uno o varios fármacos.
6. AsignacionDronesDiaria Asigna a los pedidos de un determinado día
que se selecciona, los drones que van a
realizar los envíos.

7. ListaMensualPedidosDron Lista todos los pedidos del almacén para un


dron, un mes y año seleccionado. La lista
incluirá las distancias para los envíos, así
como la información sobre los datos
acumulados de ese dron en ese mes.

8. InformeMantenimiento Muestra los datos de mantenimiento de


todos los drones para el día en curso.

Subprograma OPCIONAL: Realiza la representación gráfica (día del


mes frente a distancia) de las distancias
9. DibujarGraficasDron recorridas (horizontales y verticales)
acumuladas por un dron en el último mes.

EJEMPLO DE OPERACIONES

Las operaciones del programa serán las siguientes:


• Listar almacén.
• Alta dron.
• Alta paciente.
• Baja dron.
• Nuevo pedido.
• Asignación drones por día.
• Lista mensual pedidos por dron.
• Informe de mantenimiento.
• (OPCIONAL) Dibujar gráficas mes en curso del dron.

La práctica consiste en realizar el programa principal para la gestión del


mantenimiento de los drones del almacén y las correspondientes funciones,
procedimientos y los TADs (Tipos Abstractos de Datos) que el alumno crea
conveniente.

En la realización de esta práctica se debe reutilizar, en la medida de lo


posible, el código fuente ya realizado para la cuarta práctica.

El programa principal deberá presentar las siguientes opciones:

GESTIÓN DE MantenimientoDrones:
Listar almacen (Pulsar I)
Alta dron (Pulsar A)
Alta paciente (Pulsar P)
Baja dron (Pulsar B)
Nuevo pedido (Pulsar N)
Asignar drones (Pulsar D)
Lista mensual de pedidos por dron (Pulsar L)
Informe de mantenimiento (Pulsar R)
Dibujar gráficas del dron (Pulsar G)
Salir (Pulsar S)
Teclear una opción válida (I|A|P|B|N|D|L|R|G|S)?

INICIO DE LA APLICACIÓN: En el arranque de la aplicación es OBLIGATORIO


realizar una inicialización del sistema con datos del almacén, de los drones, de los
pacientes asignados con su ubicación, y de los pedidos de fármacos.

Todos estos datos deberán estar declarados como valores constantes en el código
fuente.

Los datos a inicializar serán:

.- Descripción y altura sobre el nivel del mar del almacén.

.- 5 pacientes del almacén.

.- 20 pedidos sobre al menos 3 pacientes.

.- 3 drones.
No hay ningún dato de entrada por teclado y simplemente se deben copiar los
valores constantes en las variables del programa. El objetivo de esta opción es
evitar la introducción por teclado de los datos cada vez que se arranca el programa.

SUBPROGRAMAS DEL MENÚ DE LA APLICACIÓN:

1.- La opción “Listar almacén” mostrará toda la información del almacén, sus
pacientes, sus pedidos y sus drones, con el siguiente formato:

Datos ACTUALES

Descripción: Torrelaguna
Altura: 737 mts

Clientes
Ref. Identificador Distancia Ángulo Altura

1 David San Miguel 2970 45 717


2 Roberto Rodríguez 7600 875 1031
3 Roberto Estaras 6123 1098 812
4 Susana ColldeForns 6680 1205 935
5 Eugenio Hernández 5020 1610 759

Pedidos

Cliente Fecha Fármaco Peso Unidades


Dron
1 5/2/2021 AntiCovid2020 20 5 Pepedron
1 10/2/2021 Zanamivir 100 1 Bisdron
3 18/3/2021 Peramivir 90 1 Bisdron1
4 20/3/2021 Zanamivir 45 2 Bisdron
4 20/3/2021 Baloxavir 45 2 Bisdron
2 20/3/2021 Amantadina 110 1 Bisdron1
2 20/3/2021 Marboxil 20 2 Bisdron1
1 20/3/2021 Oseltamivir 70 3 Bisdron1
4 25/3/2021 Baloxavir 45 2 Bisdron
3 28/3/2021 Peramivir 90 1 Pepedron
3 25/4/2021 Rimantadina 15 1
5 28/4/2021 AntiCovid2021 40 1
5 30/4/2021 AntiCovid2021 40 1
5 2/5/2021 AntiCovid2021 40 1
5 4/5/2021 AntiCovid2021 40 1
2 4/5/2021 Antiacido 25 2
2 4/5/2021 Jarabe 290 1
3 4/5/2021 Ibuprofeno 120 1
4 15/5/2021 Baloxavir 45 1
4 20/5/2021 Baloxavir 45 1
4 25/5/2021 Baloxavir 45 1
4 30/5/2021 Baloxavir 45 1

Drones

Numero Alias KmH KmRevH MetrosV MetrosRevV


Serie

ABC9876 Pepedron 4060 400 62100 10000


GGH4451 Bisdron 2990 500 35000 6000
GGK4451 Bisdron1 3045 500 34160 6000

Siendo:
KmH: Kilómetros totales en horizontal.
KmRevH: Kilómetros entre revisiones de motores en horizontal.
MetrosV: Metros totales en vertical.
MetrosRevV: Metros entre revisiones de motores en vertical.

2.- La opción “Alta dron” permite dar de alta en el sistema un nuevo dron. La opción
busca uno de los quince registros disponibles que esté libre y pide la información de
alta del dron. En caso de estar los quince registros ocupados se borrará el dron con
más kilómetros horizontales recorridos.

Alta nuevo dron:

Número de serie del dron (tres letras + cuatro numeros)? ABC 9976
Alias? (entre 1 y 10 caracteres) SYMA76
KM iniciales horizontal? (=0 si es nuevo) 0
KM horizontales entre revisiones? 600
Metros iniciales vertical? (=0 si es nuevo) 0
Metros verticales entre revisiones? 5000

Datos correctos (S/N)? S


3.- La opción “Alta paciente” permite dar de alta en el sistema un nuevo paciente y
la correspondiente ubicación a la que se debe hacer llegar sus pedidos desde el
almacén:

Alta nuevo paciente:

Identificador paciente (entre 1 y 20 caracteres)?Alina Posada


Distancia (hasta 10000 metros a plena carga)? 8711
Ángulo (entre 0 y 2000 milésimas de π radianes)? 565
Altura sobre el nivel del mar (metros)? 934

Datos correctos (S/N)? S


Otro paciente (S/N)? S

Identificador (entre 1 y 20 caracteres)? María Zato


Distancia (hasta 10000 metros a plena carga)? 8740
Ángulo (entre 0 y 2000 milésimas de π radianes)? 560
Altura sobre el nivel del mar (metros)? 910

Datos correctos (S/N)? S


Otro paciente (S/N)? N

4.- La opción “Baja Dron” borrará los datos de un determinado dron y listará los
datos de drones que quedan y tendrá el siguiente formato:

Baja Dron:

Drones

Numero Alias KmH KmRevH MetrosV MetrosRevV


Serie

ABC9876 Pepedron 4060 400 62100 10000


GGH4451 Bisdron 2990 500 35000 6000
GGK4451 Bisdron1 3045 500 34160 6000
ABC9976 SYMA76 0 600 0 5000

Dron a borrar? PGK4452

Dron no existe. Quiere seguir con la baja de dron (S/N)? S


Dron a borrar? ABC9876
Dron borrado

Drones

Numero Alias KmH KmRevH MetrosV MetrosRevV


Serie

GGH4451 Bisdron 2990 500 35000 6000


GGK4451 Bisdron1 3045 500 34160 6000
ABC9976 SYMA76 0 600 0 5000

5.- La opción de “Nuevo pedido” tendrá el siguiente formato:

Nuevo pedido:

Ref. Paciente (entre 1 y 20): 4


Número de envíos? 1
Día del envío? 5
Mes del envío? 6
Año del envío? 2021

Nombre fármaco (Entre 1 y 20 caracteres)? Analgésico


Peso fármaco (Menor de 3000 gramos)? 50
Unidades de fármaco? 6

Otro fármaco (S/N)?S

Nombre fármaco (Entre 1 y 20 caracteres)? Jarabe


Peso fármaco (Menor de 3000 gramos)? 270
Unidades de fármaco?2

Otro fármaco (S/N)?N


Otro pedido (S/N)?S

Ref. Paciente (entre 1 y 20): 5


Número de envíos? 10
Número de días entre cada envío? (Entre 1 y 15 días)? 1
Día del primer envío? 25
Mes del primer envío? 5
Año del primer envío?2021

Nombre fármaco (Entre 1 y 20 caracteres)? Antibiótico


Peso fármaco (Menor de 3000 gramos)? 20
Unidades de fármaco? 1

Otro fármaco (S/N)?N


Otro pedido (S/N)?N

6.- La opción de “Asignar drones” solicita un día y asigna los pedidos de ese día a
los drones disponibles en el almacén, con el siguiente formato

Asignar drones a pedidos de un día:

Día?4
Mes?5
Año?2021

ALMACEN: Torrelaguna - DIA: 4 de mayo de 2021

Pedido 1 – Ruta 1 - Cliente 2


Ubicación destino: Distancia: 7600, Ángulo: 875 y Altura: 1031
2 Unidades Antiacido Peso: 50 gramos
1 Unidades Jarabe Peso: 290 gramos
Peso Total del envío: 340 gramos

Pedido 2 – Ruta 1 - Cliente 3


Ubicación destino: Distancia: 6123, Ángulo: 1098 y Altura: 812
1 Unidades Ibuprofeno Peso: 120 gramos
Peso Total del envío: 20 gramos

ASIGNADO DRON: GGK4451 - TOTAL RUTA 1 HORIZONTAL = 18.63 Km


TOTAL RUTA 1 VERTICAL= 588 mt

Pedido 1 – Ruta 2 - Cliente 5


Ubicación destino: Distancia: 5020, Ángulo: 1610 y Altura: 759
1 Unidades AntiCovid2021 Peso: 40 gramos
Peso Total del envío: 40 gramos

ASIGNADO DRON: GGH4451 - TOTAL RUTA 2 HORIZONTAL= 10.04 Km


TOTAL RUTA 2 VERTICAL= 44 mt

Para simplificar el funcionamiento de los drones los desplazamientos se realizarán


siempre (se debe suponer que los drones no encuentran obstáculos en ninguno de
los movimientos, ni en la horizontal ni en la vertical):

• Si el destino está más alto que el origen. Primero existe el movimiento en la


vertical y después en horizontal.
• Si el destino está más bajo que el origen. Primero existe el movimiento en la
horizontal y después en la vertical.

La asignación del dron a una ruta de pedidos deberá considerar un reparto


equitativo de las distancias recorridas entre los drones existentes en un momento
dado en el almacén, procurando que todos los drones del almacén se usen por igual.
Será en esta asignación cuando se acumularán las distancias correspondientes a
la asignación sobre los totales del dron.

En esta opción cada alumno podrá emplear para fijar las rutas de un dron cualquier
algoritmo que asegure que el dron nunca pierde su autonomía y vuelve al almacén
teniendo en cuenta las cargas. El incremento de autonomía dependiendo de la
carga se puede considerar lineal entre 20 kilómetros a plena carga y 25 kilómetros
en vacío. El desplazamiento vertical supondremos que tiene un consumo 0.

Respecto al número de rutas para atender los pedidos, se puede optar desde
realizar una ruta (ida y vuelta) por cada pedido, que sería la solución más cara,
hasta conseguir el número mínimo de rutas posibles optimizando la conexión entre
las distintas ubicaciones.

La evaluación de la práctica tendrá en cuenta tanto el grado de optimización


conseguido en las rutas de pedidos como la asignación equitativa de las distancias
recorridas entre los drones.
7.- La opción de “Lista mensual de pedidos por dron” solicita el dron a listar y un
mes y año, y presenta la lista de pedidos asignados al dron seleccionado con las
distancias de cada uno de ellos con el siguiente formato:

Lista mensual de pedidos por dron:

Dron a mostrar? GGK4451

Mes? 5
Año? 2021

Lista de pedidos: MAYO 2021 – Dron: GGK4451 – Bisdron1

Fecha: 4/5/2021 - DistanciaH: 18.63 Km - DistanciaV: 588 mt


Fecha: 20/5/2021 - DistanciaH: 13.36 Km - DistanciaV: 396 mt
Fecha: 30/5/2021 - DistanciaH: 13.36 Km - DistanciaV: 396 mt

TOTALES MES: Distancia mensual horizontal = 45.35 Km


Distancia mensual vertical = 1380 mt

ESTADO DRON:
Inicio distancia acumulada horizontal = 3045 Km - Final = 3090 Km
Inicio distancia acumulada vertical = 34160 mt - Final = 35540 mt

8.- La opción de “Informe mantenimiento” presenta los datos de todos los drones
del almacén actualizados al día actual con los datos de las rutas asignadas con las
distancias totales y los datos de las siguientes revisiones:

Informe de Mantenimiento:

ALMACEN: Torrelaguna - HOY: 4 de junio de 2021

DRON S/N DRON ALIAS KMTOTALESH MTOTALESV


GGH4451 Bisdron 3044 35572
GGK4451 Bisdron1 3090 35440
ABC9976 SYMA76 27 88

MOTORES HORIZONTALES
DRON S/N KMTOTALESH PRÓXIMA REVISION % UTIL
GGH4451 3044 3500 91.2
GGK4451 3090 3500 82
ABC9976 27 600 95.5
MOTORES VERTICALES
DRON S/N MTOTALESV PRÓXIMA REVISION % UTIL
GGH4451 35572 36000 7.1
GGK4451 35440 36000 9.3
ABC9976 88 5000 98.2

El “% UTIL” de los motores se calcula como la diferencia entre la distancia para la


siguiente revisión menos la recorrida entre el intervalo de distancia entre revisiones.
Un 100% indica que se acaba de pasar la revisión. Un 0% indica que se debe pasar
la revisión.

9.- (OPCIÓN VOLUNTARIA) La opción de “Dibujar gráficas del dron” representa en


diagramas XY los puntos de los días del mes frente a las distancias recorridas en el
último mes.

Por ejemplo, para el dron GGK4451 el último mes MAYO 2021 con los datos de la
inicialización podrían representarse los siguientes gráficos:

Representar Gráfico XY

Dron a mostrar? GGK4451

Datos: MAYO 2021


Fecha: 4/5/2021 - DistanciaH: 18.63 Km - DistanciaV: 588 mt
Fecha: 20/5/2021 - DistanciaH: 13.36 Km - DistanciaV: 396 mt
Fecha: 30/5/2021 - DistanciaH: 13.36 Km - DistanciaV: 396 mt

InicioH : 3045 km
InicioV : 34160 mt
Se puede usar cualquier librería gráfica de las que se pueden integrar con el entorno
C+/- y el compilador MinGW. Por ejemplo, la librería WINBGIM que se puede incluir
en el entorno tal y como se comenta en el ANEXO1.

La forma de resolver la representación XY es libre.


ENTREGABLES Y PLAZOS

En el curso virtual ALF, el envío de la práctica se organizará en TRES (3) tareas:

1) PRUEBA_5_SEPT_CODIGO, donde se entregará un fichero .zip con todos los


ficheros fuentes, objetos, ejecutables y casos de prueba.

A. El fichero comprimido ZIP debe OBLIGATORIAMENTE incluir un fichero


de texto “IDENTIFICACIÓN.txt” con el nombre, los apellidos, el DNI del
alumno, un teléfono de contacto y el CAS (Centro Asociado) al que
pertenece. La memoria también deberá incluir esta información.

B. Práctica 5: Todos los alumnos deben incluir todos los ficheros fuentes,
objetos y ejecutables que resuelven la funcionalidad de la práctica 5.

El .zip contendrá:

• Una carpeta llamada codigo_p5 con todos los ficheros con el código
de la práctica (el/los fichero/s C o H).

• Una carpeta llamada ejecutable_p5: con el programa ejecutable (el


fichero EXE).

2) PRUEBA_5_SEPT_MEMORIA, donde se entregará un .pdf con la memoria.

La portada de la memoria incluirá el nombre, los apellidos, el DNI del alumno,


un teléfono de contacto y el CAS al que pertenece.

El contenido y formato de la memoria deberá incluir los apartados definidos


en este documento.

3) PRACTICA_4-SEPT_FARMADRON, donde se entregará un fichero .zip con


todos los ficheros fuentes, objetos, ejecutables, pruebas de ejecución, documentos,
etc.

CASO 1. Si el alumno ya recibió la evaluación de la práctica en la


convocatoria ordinaria debe incluir un fichero “IDENTIFICACIÓN.txt” con el nombre,
los apellidos, el DNI del alumno, un teléfono de contacto, el CAS (Centro Asociado)
donde se evaluó y la calificación recibida.

CASO 2. Si el alumno no entregó la práctica en la convocatoria ordinaria


debe incluir un fichero “IDENTIFICACIÓN.txt” con el nombre, los apellidos, el DNI
del alumno y un teléfono de contacto.

Esta entrega debe realizarse en cualquier caso.


Es requisito imprescindible para la corrección del trabajo realizar el envío de
las tres tareas:

• PRUEBA_5_SEPT_CODIGO.

• PRUEBA_5_SEPT_MEMORIA.

• PRACTICA_4-SEPT_FARMADRON.

La entrega de las tres tareas se podrá realizar en el curso virtual de la asignatura


hasta el 7 SEPTIEMBRE de 2021 a las 23:55 horas.
APARTADOS DE LA MEMORIA

Apartado 1.- Descripción de todos y cada uno de los módulos o TAD


utilizados con al menos los siguientes apartados:

a.- Nombre del módulo o TAD.

b.- Objeto del módulo. Descripción textual de para qué sirve el módulo
o TAD.

c.- Elementos del módulo o TAD (campos, procedimientos).

d.- Relación con otros módulos (en qué módulos o TADs se utiliza y
en qué módulos o TADs utiliza).

Apartado 2.- Propuesta de posibles mejoras al enunciado de la práctica en


sus diferentes aspectos con al menos los siguientes apartados:

a.- Mejoras funcionales al enunciado de la práctica: qué otras


funciones se pueden incluir en el problema planteado.

b.- Mejoras algorítmicas a la solución aportada: qué alternativas se


podrían utilizar para el optimizador de rutas y la gestión de
asignaciones de drones a pedidos.

c.- Mejoras de estructuración de datos: qué alternativas de estructuras


de datos podemos utilizar.

d.- Reutilización de elementos de la PEC4: qué elementos se han


reutilizado de la cuarta práctica en la quinta.

Apartado 3.- Pruebas realizadas con el programa resuelto.

a.- Listado de las pruebas realizadas.

b.- Pruebas (al menos 10) ejecutadas sobre el programa con sus
correspondientes descripciones que incluya:

b.1.- Descripción de la prueba.

b.2.- Capturas de la entrada de datos realizada si existe.


b.3.- Capturas de las salidas obtenidas.

Apartado 4.- Conclusiones respecto al trabajo realizado para la elaboración


de la práctica y la memoria tanto desde el punto de vista formativo, personal
o profesional con al menos los siguientes apartados:

a.- Conclusiones y logros en el ámbito formativo.

b.- Conclusiones y logros en el ámbito personal.

c.- Conclusiones y logros en el ámbito profesional.


EVALUACIÓN

1.- El sistema de evaluación incluido en la guía oficial de curso 2020/2021, que


incluye un examen presencial, NO se aplicará para la convocatoria extraordinaria
de septiembre 2020/2021.

2.- La asignatura se evaluará de forma excepcional en esta convocatoria


extraordinaria de septiembre 2020/2021 con el siguiente sistema:

• Entrega Correcta de las prácticas AUTOCORREGIDAS.

• PRÁCTICA 4: 10% de la calificación final con la NOTA recibida del TUTOR de


este trabajo o la evaluación para septiembre de este trabajo.

• PRÁCTICA_5_SEPTIEMBRE: 90% de la calificación final.

3.- Como criterios generales de evaluación se considerará:

.- Corrección de las soluciones.

.- Legibilidad del código de las soluciones. Se valorará especialmente la


eficiencia lograda en el subprograma “Asignar drones” para repartir el uso de los
drones disponibles en la atención de los pedidos del almacén.

.- Uso de una buena metodología de programación que facilite el


mantenimiento y reutilización de código. Por ejemplo, evitando código redundante
con el uso de subprogramas, maximizando la cohesión y minimizando el
acoplamiento entre módulos, etc.

.- Claridad y corrección de la documentación de la solución.

.- Originalidad y aportaciones personales en las conclusiones.

.- Cobertura, amplitud y claridad de las pruebas realizadas y documentadas.

.- Evaluación del índice de plagio.

.- Optimización de la asignación de drones en la atención de los pedidos.

.- Realización del apartado OPCIONAL.


IMPORTANTE: Todas las soluciones entregadas serán procesadas por la
herramienta de detección de plagio, Turnitin. El índice de plagio se utilizará
en la evaluación de cada alumno.

Es fundamental que las memorias no incluyan fragmentos de este enunciado,


incluidos los datos de inicialización. De lo contrario, la herramienta marcará
el plagio entre las memorias de los estudiantes que hayan realizado "copy &
paste" de este enunciado.

La detección de plagio entre dos trabajos se evaluará como SUSPENSO en


ambos casos.
ANEXO 1. INSTALACIÓN DE LA LIBRERÍA BGI Graphic
Emulation

Instalación en el entorno de la librería Borland BGI Graphic Emulation:

1. Descargar la librería:
http://winbgim.codecutter.org/V6_0/WinBGIm_Library6_0_Nov2005.zip

2. Extraer del ZIP:

.- Los dos ficheros de cabecera: “graphic.h” y “winbgim.h” se copian al


directorio del entorno:
C:\entorno\MinGW\include
.- El fichero de librería estática: “libbgi.a” se copia al directorio del entorno:
C:\entorno\MinGW\lib

3.- Configuración de directivas de compilación.


En la opción del menú del entorno: Configuración->Compilador y
depuración…

Cambiamos a la opción de “Configuración de Montaje”, y en librerías de montaje añadimos


el directorio donde hemos colocado la librería:
“C:\entorno\MinGW\lib\libbgi.a”
Y en otras opciones de montaje añadimos las directivas:
-lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32

Documentación de la librería:
http://winbgim.codecutter.org/V6_0/doc/index.html

Ejemplo de uso básico en C+/-:

int main()

initwindow( 600 , 600 , "Mi ejemplo");

setcolor(255);

line(100,100, 50, 150);


line(100,100, 150, 150);
line(48,150, 152, 150);

setcolor(LIGHTBLUE);
line ( 52,150, 52, 200);
line ( 148,150, 148, 200);

setcolor (YELLOW);
moveto( 70,200);
outtext("ALMACÉN");

getch();

return 0;

Muestra la siguiente salida:


ANEXO 2. DÍA EN CURSO

Para el acceso a la fecha actual puede utilizarse los recursos de la librería del entorno, en
concreto la estructura “tm” de “time.h”, como se muestra en el siguiente ejemplo C+/-:

#include <stdio.h>
#include <time.h>

typedef char cadena[18];


typedef tm* Mitipotime;

int main()
{
cadena fecha;
time_t tiempo;
Mitipotime s_tiempo;

int mes;
int ano;
int dia;

tiempo = time(0);
s_tiempo = localtime(&tiempo);

ano=s_tiempo->tm_year + 1900;
mes=s_tiempo->tm_mon + 1;
dia=s_tiempo->tm_mday;

printf("Fecha actual: %d/%d/%d \n", dia, mes, ano);

También podría gustarte