You are on page 1of 28

Curs 2018 - 2019

Practicas Programación I

Proyecto Semestre 1
Curs 2018 - 2019
Practicas Programación I

Í NDEX
1 Enunciado 3

2 Fase 1 4
2.1 Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Introducir información para cada piso . . . . . . . . . . . . . 6
2.1.2 Dibujar el castillo . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.3 Calcular la resistencia al aire . . . . . . . . . . . . . . . . . . . 10
2.2 Consideraciones Fase 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3 Fase 2 13
3.1 Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.1 Introduir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.2 Mostrar estadísticas . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2 Consideraciones Fase 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4 Requisitos mínimos 26

5 Memoria 27

6 Entrega proyecto 1 28

7 Fechas de entrega 28
Curs 2018 - 2019
Practicas Programación I

1 E NUNCIADO
La Organització Catalana de Castells, para los que hemos estado trabajando pre-
viamente, están encantados con los tres anteriores programas que habéis desar-
rollado. Por este motivo os quieren confiar la elaboración de un nuevo proyecto.
Éste tratará sobre la interpretación de datos que le podáis introducir. En este
proyecto, veremos dos formas de procesar información del usuario, manual-
mente y automáticamente. Por este motivo, en este enunciado veréis descritas
las funcionalidades de los dos programas que nos pide la organización.

La primera parte será la encargada de simular la construcción de un castillo me-


diante los datos que el usuario vaya introduciendo manualmente.

La segunda parte de este proyecto será más automática para el usuario. Como
veréis, funcionará mediante la introducción de una cadena de caracteres que
contendrá información referente a las “Colles” (Grupos). Esta forma de intro-
ducir los datos facilitará su trato.

Una vez hechos estos programas, el equipo de PGM1 La Salle os proporcionará


un programa general, el cual permitirá ejecutar los dos .exe generados por vosotros
a fin de hacerlos funcionar conjuntamente. De este modo veréis las diferencias
entre la introducción manual o automática de los datos.

El programa tendrá el siguiente nombre: PJ1_menu.exe.

Este programa lo tendréis disponible como cualquier comando de Linux. Po-


dréis observar que si los programas no tienen los nombres automatic.exe y man-
ual.exe no funcionará. Recordad también que tienen que funcionar con los eje-
cutables generados, por lo que éstos deberán encontrarse en la misma carpeta
donde se ejecute el programa que os damos nosotros.

Aunque en el proyecto se utilice nuestro programa para adjuntar las dos fases.
En los ejemplos se muestra la ejecución por separado.

Departamento de Ingenieria - Informática 3


Curs 2018 - 2019
Practicas Programación I

2 FASE 1
La primera fase del proyecto consistirá en pedir al usuario un conjunto de datos
con tal de evaluar la viabilidad del castillo. En primer lugar se pedirán el número
de personas del grupo y el número de pisos a intentar.

A partir de aquí, nuestro programa irá pidiendo información para cada piso.
Esta información corresponderá a la cantidad de personas que formarán cada
piso y su peso.

Esta información nos servirá para calcular su resistencia al aire. Veamos más
detalladamente cómo funcionará.

2.1 F UNCIONAMIENTO
Al iniciar el programa, lo primero que se deberá hacer es pedir el número de
personas y el número de pisos a intentar.

login@matagalls:~ >manual . exe


Bienvenido a l a LSCastleMaker
Introduce e l nombre de personas : 32
Introduce e l nombre de pisos de vuestro c a s t i l l o : 7
...

Listing 2.1

Departamento de Ingenieria - Informática 4


Curs 2018 - 2019
Practicas Programación I

Las dos comprobaciones que se tienen que realizar son:

1. Que el número de personas no sea un carácter no numérico, y asegurar


que las personas introducidas esté entre 0 y 100 sin incluirlos.

2. El número de pisos tendrá un comportamiento similar al de personas. Los


pisos estarán limitados entre 0 y 10 sin incluirlos. Se deberán hacer las
comprobaciones pertinentes.

Fijaros en que tanto para personas como para pisos, el usuario podrá introducir
una cadena de caracteres. Nuestro programa debe ser capaz de controlar este
hecho.

login@matagalls:~ >manual . exe


Bienvenido a l a LSCastleMaker
Introduce e l nombre de personas : t
ERROR: Nombre de personas incorrecto .

Introduce e l nombre de personas : hola


ERROR: Nombre de personas incorrecto .

Introduce e l nombre de personas : 101


ERROR: Nombre de personas incorrecto .

Introduce e l nombre de personas : 99


Introduce e l nombre de pisos de vuestro c a s t i l l o : −3
ERROR: Nombre de pisos incorrecto .

Introduce e l nombre de pisos de vuestro c a s t i l l o : hola


ERROR: Nombre de pisos incorrecto .

Introduce e l nombre de pisos de vuestro c a s t i l l o : 11


ERROR: Nombre de pisos incorrecto .

Introduce e l nombre de pisos de vuestro c a s t i l l o : 7

Listing 2.2

Departamento de Ingenieria - Informática 5


Curs 2018 - 2019
Practicas Programación I

2.1.1 I NTRODUCIR INFORMACIÓN PARA CADA PISO

La primera funcionalidad del programa será introducir la información de cada


piso del castillo.

Como sabéis, cada piso lo forman un número de personas con cierto peso. Para
cada piso, el usuario deberá introducir el número de personas que lo forman
y su peso correspondiente. La “Colla” (Grupo) nos asegura que como máximo
tendrán 10 personas por piso y un peso total de 750Kg. En caso de que se intro-
duzcan mal los datos, se deberán volver a pedir.

En el siguiente ejemplo (Listing 2.3) podéis ver una ejecución.


login@matagalls:~ >manual . exe
Bienvenido a l a LSCastleMaker
Introduce e l nombre de personas : 32
Introduce e l nombre de pisos de vuestro c a s t i l l o : 7
Datos :
Piso 1 :
−>Nombre de personas : 6
−>Peso t o t a l ( Kg ) : 450
Piso 2 :
−>Nombre de personas : 4
−>Peso t o t a l ( Kg ) : 312 ,7
Piso 3 :
−>Nombre de personas : 3
−>Peso t o t a l ( Kg ) : 210
Piso 4 :
−>Nombre de personas : 2
−>Peso t o t a l ( Kg ) : 130 ,5
Piso 5 :
−>Nombre de personas : 2
−>Peso t o t a l ( Kg ) : 130 ,5
Piso 6 :
−>Nombre de personas : 2
−>Peso t o t a l ( Kg ) : 129 ,5
Piso 7 :
−>Nombre de personas : 1
−>Peso t o t a l ( Kg ) : 73 ,8
Gracias !

Listing 2.3

Departamento de Ingenieria - Informática 6


Curs 2018 - 2019
Practicas Programación I

Como veréis en el ejemplo Listing 2.4, será necesario comprobar que el peso y
el número de integrantes del piso actual no superen al del piso anterior. En caso
contrario, se deberá mostrar un mensaje de error y volver a pedir los datos.
Este error se podrá dar cuando el número de integrantes sea superior al piso in-
ferior o cuando el peso supere el peso del piso inferior, en cualquiera de estas
situaciones el piso no será viable y se deberá pedir al usuario la reintroducción
de los datos.
También se deberá controlar que la suma de personas de todos los pisos no su-
pere la introducida inicialmente, si esto pasara se debería mostrar un mensaje
de error y volver a pedir la información de todos los pisos.
login@matagalls:~ >manual . exe
Bienvenido a l a LSCastleMaker
Introduce e l nombre de personas : 32
Introduce e l nombre de pisos de vuestro c a s t i l l o : 7
Datos :
Piso 1 :
−>Nombre de personas : 6
−>Peso t o t a l ( Kg ) : 450
Piso 2 :
−>Nombre de personas : 4
−>Peso t o t a l ( Kg ) : 560 ,7
ERROR: Este pis no es v i a b l e .
Piso 2 :
−>Nombre de personas : 4
−>Peso t o t a l ( Kg ) : 312 ,5
Piso 3 :
−>Nombre de personas : 5
−>Peso t o t a l ( Kg ) : 210
ERROR: Este piso no es v i a b l e .
Piso 3 :
−>Nombre de personas : 3
−>Peso t o t a l ( Kg ) : 210
Piso 4 :
−>Nombre de personas : 2
−>Peso t o t a l ( Kg ) : 130 ,5
...
Piso 7 :
−>Nombre de personas : 1
−>Peso t o t a l ( Kg ) : 73 ,8
Gracias !

Listing 2.4

Departamento de Ingenieria - Informática 7


Curs 2018 - 2019
Practicas Programación I

También se deberá controlar que la suma de personas de todos los pisos no su-
pere la introducida inicialmente, si esto pasara se debería mostrar un mensaje
de error y volver a pedir la información de todos los pisos.

login@matagalls:~ >manual . exe


Bienvenido a l a LSCastleMaker
Introduce e l nombre de personas : 32
Introduce e l nombre de pisos de vuestro c a s t i l l o : 7
Datos :
Piso 1 :
−>Nombre de personas : 6
−>Peso t o t a l ( Kg ) : 450
Piso 2 :
−>Nombre de personas : 30
−>Peso t o t a l ( Kg ) : 560 ,7
ERROR: No puedes superar e l t o t a l de
personas .

Datos :
Piso 1 :
−>Nombre de personas : 6
−>Peso t o t a l ( Kg ) : 450
Piso 2 :
−>Nombre de personas : 4
−>Peso t o t a l ( Kg ) : 312 ,5
...
Piso 7 :
−>Nombre de personas : 1
−>Peso t o t a l ( Kg ) : 73 ,8
Gracies !

Listing 2.5

Departamento de Ingenieria - Informática 8


Curs 2018 - 2019
Practicas Programación I

2.1.2 D IBUJAR EL CASTILLO

Esta funcionalidad dibujará el castillo en el terminal según la configuración que


el usuario haya introducido.

login@matagalls:~ >manual . exe


Bienvenido a l a LSCastleMaker
...
Gracias !
Vuestro c a s t i l l o :
|*|
|&|&|
|&|&|
|&|&|
|&|&|&|
|&|&|&|&|
|&|&|&|&|&|&|
...

Listing 2.6

Se deben indicar los miembros del último piso con el carácter ‘*’.

De forma opcional, se propone el reto de intentar dibujar el castillo de la sigu-


iente forma:

login@matagalls:~ >manual . exe


Benvingut a l a LSCastleMaker
...
Gracies !
Vuestro c a s t i l l o 2 . 0 :
|*|
|&|&|
|&|&|
|&|&|
|&|&|&|
|&|&|&|&|
|&|&|&|&|&|&|
...

Listing 2.7

Departamento de Ingenieria - Informática 9


Curs 2018 - 2019
Practicas Programación I

2.1.3 C ALCULAR LA RESISTENCIA AL AIRE

Justo después de dibujar el castillo, será necesario saber qué resistencia al aire
tiene con tal de ver su viabilidad.
Para hacerlo, el equipo de cálculo ha desarrollado la siguiente fórmula para
obtener este dato:
à !
N p
X 2
r esi st enci a = x i ∗ Peso x i Per sonas x i + sin (π)
i =1

La cifra exacta, viene dada por la fórmula matemática, por lo que el cálculo
que necesitará hacer nuestro programa viene determinado por esta. Veréis que
necesitaréis el peso por cada piso del castillo, el número de pisos y el total de
personas que lo forman. Todos estos datos los habrá introducido el usuario en
algún punto.

login@matagalls:~ >manual . exe


Benvenido a l a LSCastleMaker
...
Graciss !
Vuestro c a s t i l l o :
|*|
|&|&|
|&|&|
|&|&|
|&|&|&|
|&|&|&|&|
|&|&|&|&|&|&|
La r e s i s t e n c i a a l a i r e que tendra sera del : 63,50%

Listing 2.8

Departamento de Ingenieria - Informática 10


Curs 2018 - 2019
Practicas Programación I

2.2 C ONSIDERACIONES FASE 1


1. Todos los valores de coma flotante (reales) se deberán mostrar con dos
decimales, en nuestro caso el porcentaje de la resistencia al aire.

2. El programa deberá respetar el formato exacto mostrado en los ejemplos.

3. El programa deberá aceptar números con coma flotante para el peso, se


recuerda que el usuario puede introducir cadenas, aunque éstas no super-
arán los 5 caracteres.

4. El peso será un dato de tipo float. Éste no podrá ser menor o igual a 0.

5. La suma de personas de cada piso no puede ser superior al número in-


troducido como total de personas. De ser así, se deberán pedir de nuevo
todos los datos de los pisos del castillo, empezando por el primer piso.

6. Se deberá controlar que los datos del piso introducidos sean correctos. De
no ser así, se deberá mostrar un mensaje de error y volver a pedirlas.

7. El número de pisos del castillo debe ser un valor entero superior a cero.
Cualquier otro valor (cero o negativo) será un valor incorrecto. Se recuerda
que el usuario puede introducir cadenas, aunque éstas no superarán los 5
caracteres.

8. El número de personas tanto total como por piso deberá ser mayor a 0 y
no podrá ser un carácter no numérico. Se recuerda que el usuario puede
introducir cadenas, aunque éstas no superarán los 5 caracteres.

9. En caso de que el usuario introduzca algún valor incorrecto se deberá


volver a pedir este valor hasta que sea correcto.

10. El programa no debe aceptar números negativos en ningún momento. Si


se diera el caso, se debería mostrar un mensaje de error y volver a pedir el
dato correspondiente.

11. Para poder usar las funciones matemáticas de la fórmula deberéis usar la
librería math.h

12. El piso será un carácter. Se deberá controlar que esté entre ‘1’ y ‘9’. Se
recuerda que el usuario puede introducir cadenas, aunque éstas no su-
perarán los 5 caracteres.

13. Para compilar el código, se usará la herramienta gcc mediante el comando:


gcc (nombre del fichero).c -lm -o (nombre del ejecutable).

Departamento de Ingenieria - Informática 11


Curs 2018 - 2019
Practicas Programación I

14. Aquí podéis encontrar información sobre la librería math.h:


https://users.cs.cf.ac.uk/Dave.Marshall/C/node17.html

15. No se puede utilizar ninguna herramienta que no se haya visto en clase.


Por ejemplo, se puede utilizar: strcmp, strlen, etc i la librería math.

Departamento de Ingenieria - Informática 12


Curs 2018 - 2019
Practicas Programación I

3 FASE 2
La segunda fase de este proyecto será una evolución de la primera fase, de donde
pasaremos de una introducción manual de los datos a una forma automática
mediante el tratamiento de una cadena de caracteres. Esto quiere decir que
nuestro programa reconocerá cada campo de la cadena de caracteres y no irá
preguntando uno por uno. El formato de esta cadena será:

num_colles$colla_1$colla_2 ... $colla_n

Donde cada grupo tendrá:


<nom_grupo>-<data_fundacion>-<num_integrantes>-<num_castillos_realitzados>-
<castillos_realitzados>

• nombre_grupo: Este campo se refiere al nombre del grupo, el cual puede


contener espacios.

• data_fundación: Fecha que nos indica cuando se fundó la pandilla. Sigue


el formato dd/mm/aaaa.

• num_integrantes: Número de integrantes que tiene el grupo. Debe ser un


superior a 0.

• num_castillos_realitzados: Número de castillos totales realizados. Tam-


bién debe ser superior a 0.

• castillos_realitzados: Los diferentes tipos de castillos que el grupo ha re-


alizado.

• -: Carácter que separa los campos.

Donde los castillos realizados serán un array de cadenas de caracteres con cada
castillo que el grupo ha realizado: 2 de 7, 2 de 8, ...

Nota: No existirá ningún grupo que sepa hacer más de 10 castillos diferentes.

Departamento de Ingenieria - Informática 13


Curs 2018 - 2019
Practicas Programación I

Los castillos que saben hacer son los siguientes:

• Castillo de 6: 2 de 6.

• Castillo de 7: 2 de 7, 3 de 7 i 4 de 7.

• Castillo de 8: 2 de 8 con forro, 3 de 8, 4 de 8 i 5 de 8.

• Castillo de 9: 3 de 9 con forro i 4 de 9 con forro.

Un ejemplo de una cadena correcta es:


3$Castillo Dumped-21/03/2017-60-2-2 de 8, 2 de 7$LSCastellers-10/01/2018-
30-1-4 de 7$Los patitos-08/10/1999-100-5-2 de 6, 2 de 7, 3 de 7, 4 de 7, 4 de 9
con forro

Una vez procesada esta información este segundo programa debe ser capaz de
mostrar una serie de estadísticas sobre los grupos que participan que veremos
detallado más adelante.

Departamento de Ingenieria - Informática 14


Curs 2018 - 2019
Practicas Programación I

3.1 F UNCIONAMIENTO
Lo primero que aparece al iniciar el programa será, siguiendo la tradición, un
mensaje de bienvenida. Seguido de este, pediremos al usuario que introduzca la
cadena de caracteres. Una vez introducida, se pasará al menú de las estadísticas
y, al salir de éste, se volverá a repetir este ciclo hasta que la cadena introducida
sea exit

login@matagalls:~ > automatic . exe


Bienvenido a l a LSCastleMaker
Input :

3.1.1 I NTRODUIR

La primera acción que nos permitirá realizar el programa será introducir la ca-
dena de caracteres con la información de todos los grupos.

En primer lugar encontramos el número de grupos que habrá en la cadena. Este


valor podrá obtener un valor entre 1 y 10, ambos inclusive. A continuación, sep-
aradas entre ellas por el carácter ’$’, todos los grupos.

Os aseguramos que no habrá grupos repetidas, es decir, que nunca se intro-


ducirán dos grupos con el mismo nombre.

También os aseguramos que el número de integrantes será superior a 0, por lo


tanto, no tendrá que controlar que esto sea correcto.

El nombre del grupo, la fecha de fundación y el número de castillos realizados sí


pueden ser erróneos. Deberá comprobar que el nombre tenga una longitud de
entre 1 y 20 caracteres, que la fecha sea válida y que el número de castillos re-
alizados sea superior a 0. El número de castillos realizados siempre coincidirá
con el listado de castillos realizados.

Si cualquiera de estos campos es incorrecto, no se guardará ningún grupo de la


cadena y se volverá a pedir que introduzca una cadena.

Recuerde que un grupo no puede haber hecho más de 10 castillos. En caso de


que esto ocurra, deberá mostrar un error indicando el nombre del grupo y de-
berá volver a pedir la introducción de la cadena. Por supuesto, si se muestra este
mensaje de error, tampoco tendrán que guardar los grupos introducidas.

Departamento de Ingenieria - Informática 15


Curs 2018 - 2019
Practicas Programación I

login@matagalls:~ > automatic . exe


Bienvenido a l a LSCastleMaker

Input :
3 $ C a s t i l l o Dumped−21/03/2017−60−2−2 de 8 , 2 de 7
$LSCastellers −10/01/2018−30−1−4 de 7
$Los patitos −08/10/1999−100−5−2 de 6 , 2 de 7 ,
3 de 7 , 4 de 7 , 4 de 9 con f o r r o

Informacion introducida con e x i t o !

Que e s t a d i s t i c a quieres ver :

Listing 3.1

En el Listing 3.1 puede observar el funcionamiento del programa cuando la ca-


dena introducida es correcto.

En los siguientes cuatro ejemplos se observan los diferentes errores que se pueden
producir.
login@matagalls:~ > automatic . exe
Bienvenido a l a LSCastleMaker

Input :
3 $ C a s t i l l o Dumped−21/03/2017−60−2−2 de 8 , 2 de 7
$LSCastellers −10/01/2018−30−1−4 de 7
$Los patitos −08/10/1999−100−11−2 de 7 , 2 de 6 ,
2 de 7 , 3 de 7 , 4 de 7 , 4 de 9 con f o r r o

Error ! Los grupos no saben hacer mas de 10 c a s t i l l o s

Input :

Listing 3.2

En el Listing 3.2 hemos introducido que la pandilla Los patitos han realizado 11
castillos, que es erróneo porque ningún grupo sabe hacer más de 10.

Departamento de Ingenieria - Informática 16


Curs 2018 - 2019
Practicas Programación I

login@matagalls:~ > automatic . exe


Bienvenido a l a LSCastleMaker

Input :
C a s t i l l o Dumped−34/03/2017−60−2−2 de 8 , 2 de 7
$LSCastellers −10/01/2018−30−1−4 de 7
$Los patitos −08/10/1999−100−5−2 de 6 , 2 de 7 ,
3 de 7 , 4 de 7 , 4 de 9 con f o r r o

Error ! Los datos han de ser correctos

Input :

Listing 3.3

En el Listing 3.3 hemos introducido que la pandilla Castillo Dumped se fundó el


34/03/2017, que es erróneo porque Marzo no tiene 34 días.

login@matagalls:~ > automatic . exe


Bienvenido a l a LSCastleMaker

Input :
3 $ C a s t e l l Dumped−21/03/2017−60−2−2 de 8 , 2 de 7
$ L S C a s t e l l e r s tiene un nombre largo −10/01/2018−30−1−
4 de 7
Los patitos −08/10/1999−100−5−2 de 6 , 2 de 7 ,
3 de 7 , 4 de 7 , 4 de 9 con f o r r o

Error ! Los nombres no pueden superar l o s 20 c a r a c t e r s

Input :

Listing 3.4

En el Listing 3.4 hemos introducido un grupo llamado LSCastellers tiene un nom-


bre largo, i tener una longitud superior a 20 caracteres, también es erróneo.

Departamento de Ingenieria - Informática 17


Curs 2018 - 2019
Practicas Programación I

login@matagalls:~ > automatic . exe


Bienvenido a l a LSCastleMaker

Input :
12 $ C a s t e l l Dumped−21/03/2017−60−2−2 de 8 , 2 de 7
$LSCastellers −10/01/2018−30−1−4 de 7
$Los patitos −08/10/1999−100−5−2 de 6 , 2 de 7 ,
3 de 7 , 4 de 7 , 4 de 9 con f o r r o

Error ! Solo se puede i n t r o d u i r un t o t a l de 10 grupos

Input :

Listing 3.5

En el Listing 3.5 hemos introducido que nuestra cadena tiene 12 grupos y, como
sólo podemos guardar 12, es erróneo.

login@matagalls:~ > automatic . exe


Bienvenido a l a LSCastleMaker

Input :
3 $ C a s t e l l Dumped−21/03/2017−60−2−2 de 8 , 2 de 7
$LSCastellers −10/01/2018−30−1−4 de 7
$Los patitos −08/10/1999−100−5−2 de 6 , 2 de 7 ,
3 de 7 , 4 de 7 , 4 de 9 con f o r r o

Informacion introducida con e x i t o !

Que e s t a d i s t i c a quieres ver :


(...)

Input :
exit
Gracias por u t i l i t z a r nuestro programa

Listing 3.6

Por último, el Listing 3.6 va un paso más allá y nos muestra cómo una vez hemos
salido del menú de las estadísticas, que ya veremos más adelante cómo fun-
ciona, nos volverá a pedir la cadena de caracteres. Si introducimos exit, finalizará

Departamento de Ingenieria - Informática 18


Curs 2018 - 2019
Practicas Programación I

la ejecución.

En todos los ejemplos anteriores la cadena se muestra cortada para facilitar su


lectura, pero se deberá introducir en una sola línea:
3$Castell Dumped-21/03/2017-60-20-2 de 8, 2 de 7$LSCastellers-10/01/2018-
30-10-4 de 7$Los patitos-08/10/1999-100-53-2 de 6, 2 de 7, 3 de 7, 4 de 7, 4 de 9
con forro

3.1.2 M OSTRAR ESTADÍSTICAS

Una vez introducida la cadena de caracteres, el programa nos permitirá mostrar


diferentes estadísticas referentes a los grupos que se han introducido. En selec-
cionarla, se deberá mostrar un menú que nos permitirá escoger qué estadística
mostrar.
login@matagalls:~ > automatic . exe
Bienvenido a l a LSCastleMaker

Input :
3 $ C a s t e l l Dumped−21/03/2017−60−2−2 de 8 , 2 de 7
$LSCastellers −10/01/2018−30−1−4 de 7
$Los patitos −08/10/1999−100−5−2 de 6 , 2 de 7 ,
3 de 7 , 4 de 7 , 4 de 9 con f o r r o

Que e s t a d i s t i c a quieres ver :


a− Nombre de c a s t i l l o s hechos por e l grupo
b− C a s t i l l o mas comun
c− Grupo con mas i n te gr a nt e s
d− Grupo mas nuevo
e− Muestra todos l o s grupos
f− S a l i r

Opcion :
Como puede observarse, el submenú escogerá introduciendo un carácter de la
’a’ a la ’f’. Estos caracteres son case sensitive. Podemos observar el este control
de error en el listing 3.7:

Departamento de Ingenieria - Informática 19


Curs 2018 - 2019
Practicas Programación I

login@matagalls:~ > automatic . exe

(...)

Que e s t a d i s t i c a quieres ver :


a− Nombre de c a s t i l l o s hechos por e l grupo
b− C a s t i l l o mas comun
c− Grupo con mas i n te gr a nt e s
d− Grupo mas nuevo
e− Muestra todos l o s grupos
f− S a l i r
Opcion : A

Error ! No e x i s t e esta opcion

Que e s t a d i s t i c a quieres ver :


a− Nombre de c a s t i l l o s hechos por e l grupo
b− C a s t i l l o mas comun
c− Grupo con mas i n te gr a nt e s
d− Grupo mas nuevo
e− Muestra todos l o s grupos
f− S a l i r
Opcion :

Listing 3.7

Les diferentes opciones son las siguientes:

Número de castillos hechos por cada grupo: se mostrará un listado con todos
los grupos introducidas indicando el número de castillos que han realizado.
login@matagalls:~ > automatic . exe
( ... )
Opcion : a

El grupo C a s t i l l o Dumped ha hecho 2 c a s t i l l o s .


El grupo L S C a s t e l l e r s ha hecho 1 c a s t i l l o s .
El grupo Los p a t i t o s ha hecho 5 c a s t i l l o s .

Que e s t a d i s t i c a quieres ver :


a− Nombre de c a s t i l l o s hechos por e l grupo
b− C a s t i l l o mas comun

Departamento de Ingenieria - Informática 20


Curs 2018 - 2019
Practicas Programación I

c− Grupo con mas i n te gr a nt e s


d− Grupo mas nuevo
e− Muestra todos l o s grupos
f− S a l i r
Opcion :

Castillo más común [OPCIONAL]: deberá mostrar qué castillo es el que más
veces se ha realizado. En caso de empate, el castillo más común será aquel que
necesite el menor número de participantes para realizarse.
login@matagalls:~ > automatic . exe
( ... )
Opcion : b

El c a s t i l l o que mas se a realiz ado es e l 2 de 7 .

Que e s t a d i s t i c a quieres ver :


a− Nombre de c a s t i l l o s hechos por e l grupo
b− C a s t i l l o mas comun
c− Grupo con mas i n te gr a nt e s
d− Grupo mas nuevo
e− Muestra todos l o s grupos
f− S a l i r
Opcion :

Grupo con mas integrantes: tendrá que mostrar la información del grupo con
más integrantes.
login@matagalls:~ > automatic . exe
( ... )
Opcion : c

El grupo con mas i n te gr a nt e s es :


**************************************
* Los P a t i t o s
* Fundado e l : 08/10/1999
* Con un t o t a l de 100 i n t e g r a n te s
* 5 c a s t i l l o s realizados
* Los c a s t i l l o s que han real izado son :
* 2 de 6
* 2 de 7
* 3 de 7

Departamento de Ingenieria - Informática 21


Curs 2018 - 2019
Practicas Programación I

* 4 de 7
* 4 de 9 con f o r r o
***************************************

Que e s t a d i s t i c a quieres ver :


a− Nombre de c a s t i l l o s hechos por e l grupo
b− C a s t i l l o mas comun
c− Grupo con mas i n te gr a nt e s
d− Grupo mas nuevo
e− Muestra todos l o s grupos
f− S a l i r
Opcion :

Grupo más nuevo: tendrá que mostrar la información del grupo con más inte-
grantes.
login@matagalls:~ > automatic . exe
( ... )
Opcion : d

El grupo mas nuevo es :


**************************************
* LSCastellers
* Fundado e l : 10/01/2018
* Con un t o t a l de 30 i n t e g r a n t e s
* 1 c a s t i l l o realitzados
* Los c a s t i l l o s que han r e a l i t z a d o son :
* 4 de 7
***************************************

Que e s t a d i s t i c a quieres ver :


a− Nombre de c a s t i l l o s hechos por e l grupo
b− C a s t i l l o mas comun
c− Grupo con mas i n te gr a nt e s
d− Grupo mas nuevo
e− Muestra todos l o s grupos
f− S a l i r
Opcion :

Mostrar todas los grupos: deberá mostrar un listado con toda la información de
todos los grupos introducidas.

Departamento de Ingenieria - Informática 22


Curs 2018 - 2019
Practicas Programación I

login@matagalls:~ > automatic . exe


( ... )
Opcion : e

**************************************
* C a s t i l l o Dumped
* Fundado e l : 21/03/2017
* Con un t o t a l de 60 i n t e g r a n t e s
* 2 castells realitzados
* Los c a s t i l l o s que han real izado son :
* 2 de 8
* 2 de 7
***************************************
**************************************
* LSCastellers
* Fundado e l : 10/01/2018
* Con un t o t a l de 30 i n t e g r a n t e s
* 1 c a s t i l l o realitzados
* Los c a s t i l l o s que han r e a l i t z a d o son :
* 4 de 7
***************************************
**************************************
* Los P a t i t o s
* Fundado e l : 08/10/1999
* Amb un t o t a l de 100 i n t e g r a n te s
* 5 c a s t i l l o s realitzados
* Los c a s t i l l o s que han r e a l i t z a d o son :
* 2 de 6
* 2 de 7
* 3 de 7
* 4 de 7
* 4 de 9 con f o r r o
***************************************

Que e s t a d i s t i c a quieres ver :


a− Nombre de c a s t i l l o s hechos por e l grupo
b− C a s t i l l o mas comun
c− Grupo con mas i n te gr a nt e s
d− Grupo mas nuevo
e− Muestra todos l o s grupos
f− S a l i r
Opcion :

Departamento de Ingenieria - Informática 23


Curs 2018 - 2019
Practicas Programación I

Salir: acaba la ejecución del menú de las estadísticas y se vuelve a pedir una
cadena de caracteres. Esta sobrescribirá la anterior.
login@matagalls:~ > automatic . exe
( ... )
Opcion : f

Input :

IMPORTANTE: Observar que la opción b, Castillo más común, es opcional. Esto


quiere decir que no es necesario que la implemente. Sólo está pensada para
aquellos que desee resolver un reto un poco más complicado. Para aquellos que
no la implemente, debe mostrar un mensaje informativo tal como el del Listing
3.8.
login@matagalls:~ > automatic . exe

(...)

Que e s t a d i s t i c a quieres ver :


a− Nombre de c a s t i l l o s hechos por e l grupo
b− C a s t i l l o mas comun
c− Grupo con mas i n te gr a nt e s
d− Grupo mas nuevo
e− Muestra todos l o s grupos
f− S a l i r
Opcion : b

Esta opcion no esta implementada .

Que e s t a d i s t i c a quieres ver :


a− Nombre de c a s t i l l o s hechos por e l grupo
b− C a s t i l l o mas comun
c− Grupo con mas i n te gr a nt e s
d− Grupo mas nuevo
e− Muestra todos l o s grupos
f− S a l i r
Opcion :

Listing 3.8

Departamento de Ingenieria - Informática 24


Curs 2018 - 2019
Practicas Programación I

3.2 C ONSIDERACIONES FASE 2


El programa tendrá que cumplir con las siguientes consideraciones:

1. El programa deberá controlar la introducción de la fecha por lo que el mes


esté entre 1 y 12 y el día esté entre 1 y 31 (excepto febrero). En caso con-
trario, el programa mostrará un mensaje de error y volverá a pedir la ca-
dena.

2. El programa deberá controlar la introducción del nombre de los grupos


de manera que éste no supere los 20 caracteres. En caso contrario, el pro-
grama mostrará un mensaje de error y volverá a pedir la cadena.

3. Os garantizamos que el número de grupos que indica la cadena siempre


coincidirá con los grupos que hay.

4. También os garantizamos que el número de integrantes y el número de


castillos totales realizados serán positivos. Este último siempre coincidirá
con los castillos realizados.

5. En el menú de estadísticas, los valores serán siempre carácter. También


deberá controlar que sea un carácter válido. En caso de no ser lo, deberá
mostrar un mensaje de error y volver a pedir la opción.

6. El programa deberá respetar el formato exacto que se muestra en los ejem-


plos.

7. Si la cadena de introducción de datos contiene más de 10 grupos, deberá


mostrar un mensaje de error y volverá a pedir la cadena.

8. Si un grupo ha hecho más de 10 castillos diferentes, el programa mostrará


un mensaje de error y volverá a pedir la cadena.

9. El formato de la cadena siempre será correcto. Los separadores siempre


serán los indicados y el número de grupos introducidos coincidirá con el
número por el que comienza la cadena.

10. Preste especial atención a los meses de 28, 30 y 31 días, esto como los años
bisiestos con meses de 29 días.

11. Cuando se selecciona la opción f del menú (salir) se ha de volver a pedir la


cadena de caracteres.

12. No se puede utilizar ninguna herramienta que no se haya visto en clase.


Se puede utilizar: strcmp, strlen y la librería math.

Departamento de Ingenieria - Informática 25


Curs 2018 - 2019
Practicas Programación I

4 R EQUISITOS MÍNIMOS
Esta práctica deberá cumplir con una serie de requisitos mínimos de calidad
para poder ser evaluada.

• El código debe estar correctamente comentado de forma que pueda seguirse


el código sin dificultades.

• Se debe seguir la guía de estilo de la asignatura.

• Cada fase debe estar escrita en un fichero .c diferente.

• La práctica deberá desarrollarse en el entorno del servidor matagalls.salleurl.edu

• La práctica deberá poder ser compilada y ejecutada en este entorno.

• La práctica debe cumplir con los apartados de memoria, entrega y fechas


de entrega.

• Los nombres de los dos ejecutables deben ser manual.exe y automatic.exe.

• Para compilar el código, se usará la herramienta gcc mediante el comando:


gcc (nombre del archivo) .c -lm -o (nombre del ejecutable).

• Para ejecutar las dos fases al mismo tiempo, puede utilizar el ejecutable
que le proporcionaremos con el siguiente comando: ./ PJ1_menu.exe

Departamento de Ingenieria - Informática 26


Curs 2018 - 2019
Practicas Programación I

5 M EMORIA
La memoria tendrá que constar obligatoriamente de los siguientes apartados:

• Portada del estudy:

• Índice numerado.

• Resumen breve de los enunciados.

• Diagrama de actividades de la fase 1.

• Problemas observados.

• Coste temporal de realización de la practica.

• Comentarios del contenido extra que s’se haya podido añadir a cada uno
de los ejercicios. (Opcional)

• Conclusiones

Cualquier memoria que no cumpla el formato anterior, será devuelta y la nota


del proyecto será un suspenso hasta que el alumno no entregue una memoria
que cumpla con el formato que se requiere.

Nota: Cualquier memoria con contenido no formal o inapropiado o con expli-


caciones poco rigurosas también será devuelta.

Departamento de Ingenieria - Informática 27


Curs 2018 - 2019
Practicas Programación I

6 E NTREGA PROYECTO 1
Para la Fase 1 se abrirá un pozo en el eStudy donde deberá colgar el siguiente:

• PJ1_manual_<login1>_<login2>.c

EJEMPLO: PJ1_manual_andres.biarge_enric.casals.c

El formato de entrega final 11 de enero será el siguiente:

• PJ1_<login1>_<login2>.tar.gz

– PJ1_manual_<login1>_<login2>.c
– PJ1_automatic_<login1>_<login2>.c
– Memòria (format PDF)

EJEMPLO: PJ1_andres.biarge_enric.casals.tar.gz

El archivo comprimido se deberá entregar en el pozo correspondiente antes de


la fecha y hora límites.

IMPORTANTE: Se debe seguir la normativa de entrega y se debe cumplir con


el formato de elaboración de la memoria. En caso contrario, no se aceptará el
proyecto.

7 F ECHAS DE ENTREGA
Disponéis de las siguientes fechas de entrega

• 14 de Diciembre: Preentrega Fase 1

• 11 de Enero: Entrega Proyecto sobre 10

• 12 de Mayo: Entrega Proyecto sobre 8

• 26 de Julio: Entrega Proyecto sobre 6

Departamento de Ingenieria - Informática 28

You might also like