Professional Documents
Culture Documents
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 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.
Aunque en el proyecto se utilice nuestro programa para adjuntar las dos fases.
En los ejemplos se muestra la ejecución por separado.
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.
Listing 2.1
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.
Listing 2.2
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.
Listing 2.3
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
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.
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
Listing 2.6
Se deben indicar los miembros del último piso con el carácter ‘*’.
Listing 2.7
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.
Listing 2.8
4. El peso será un dato de tipo float. Éste no podrá ser menor o igual a 0.
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.
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.
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á:
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.
• Castillo de 6: 2 de 6.
• Castillo de 7: 2 de 7, 3 de 7 i 4 de 7.
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.
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
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.
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
Listing 3.1
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
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.
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
Input :
Listing 3.3
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
Input :
Listing 3.4
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
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.
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
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á
la ejecución.
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
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:
(...)
Listing 3.7
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
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
Grupo con mas integrantes: tendrá que mostrar la información del grupo con
más integrantes.
login@matagalls:~ > automatic . exe
( ... )
Opcion : c
* 4 de 7
* 4 de 9 con f o r r o
***************************************
Grupo más nuevo: tendrá que mostrar la información del grupo con más inte-
grantes.
login@matagalls:~ > automatic . exe
( ... )
Opcion : d
Mostrar todas los grupos: deberá mostrar un listado con toda la información de
todos los grupos introducidas.
**************************************
* 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
***************************************
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 :
(...)
Listing 3.8
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.
4 R EQUISITOS MÍNIMOS
Esta práctica deberá cumplir con una serie de requisitos mínimos de calidad
para poder ser evaluada.
• Para ejecutar las dos fases al mismo tiempo, puede utilizar el ejecutable
que le proporcionaremos con el siguiente comando: ./ PJ1_menu.exe
5 M EMORIA
La memoria tendrá que constar obligatoriamente de los siguientes apartados:
• Índice numerado.
• Problemas observados.
• Comentarios del contenido extra que s’se haya podido añadir a cada uno
de los ejercicios. (Opcional)
• Conclusiones
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
• 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
7 F ECHAS DE ENTREGA
Disponéis de las siguientes fechas de entrega