elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Me dais la vida, práctica C!!!!!!!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Me dais la vida, práctica C!!!!!!!!  (Leído 3,295 veces)
jdvn

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Me dais la vida, práctica C!!!!!!!!
« en: 17 Diciembre 2015, 18:50 pm »

Me han metido una jodienda a última hora de C, porque el profesor no tenía tiempo para dar el temario, así que nos ha clavado una práctica perrera en el último momentos y no me da tiempo a mirarlo bien porque no es el único profesor, piedad por favor, ayúdenme, mi segunda matrícula está en juego y es mucho de cara >:D.

Resumen
Vamos a crear un sistema concurrente de comprobación de palíndromos, basado en el siguiente esquema de hilos en paralelo:
 Productor: Lee palabras (cadenas de caracteres) de un fichero y las almacena en un buffer circular (buffer1)
compartido con los consumidores que comprueban si la palabra es un palíndromo o no.
 Consumidor/es para el cálculo de palíndromos: recoge/n las cadenas del buffer1, calculan si es un palíndromo o
no y generan un string con la respuesta que es almacenado en un segundo buffer circular (buffer2) compartido con el
consumidor que almacena el resultado en fichero.
 Consumidor final: recoge la información almacenada en el buffer2 y la va almacenando en un fichero.
Vamos a dividir la práctica en dos partes de dificultad incremental. La primera parte vale el 70% de la calificación total de la
práctica. Para optar al 30% restante habrá que realizar también la segunda parte. Se aconseja empezar por la primera parte y
una vez que se tenga, modificarla para la realización de la segunda.
Objetivos
 Practicar la creación y gestión de hilos en UNIX.
 Practicar la gestión y control de acceso a memoria compartida mediante semáforos.
Condiciones de entrega
 La entrega se realizará mediante la web de la asignatura.
 Para una mejor identificación, el nombre del programa indicará el grupo de teoría, grupo de laboratorio, número de
pareja y primer apellido de cada miembro de la pareja; será algo así como: T1L2G11GonzalezMerino.c.
IMPORTANTE: si los apellidos tienen acento no ponerlo en el nombre del programa.
 En las primeras líneas de cada fichero fuente enviado, debe aparecer como comentario el nombre, dos apellidos y
DNI de cada uno de los autores.
 Deberá incluir obligatoriamente el código fuente de la aplicación. Si se han realizado ambas partes habrá que
incluir en el envío sólo el código de la segunda parte.
 Se podrá incluir cualquier información adicional que se considere que puede ser útil para la evaluación de la práctica.
 Se valorará la claridad del código y la inclusión de comentarios aclaratorios.
Parte 1 (OBLIGATORIA): consumidor de palíndromos único
La aplicación a realizar tendrá la siguiente sintaxis en su ejecución:
practica TamBuffer1 ficheroPalabras
El programa realizará las siguientes tareas:
 El hilo Productor leerá cada palabra (cadena) del fichero introducido como segundo argumento (ficheroPalabras). Irá
almacenando esas palabras en el buffer1, cuyo tamaño será el del primer argumento al programa (TamBuffer1). Para
crear este buffer (array) suponer que ninguna de las palabras del fichero tiene una longitud mayor de 10 caracteres.
 Un único hilo Consumidor recogerá las palabras almacenados en el buffer1, comprobará si es un palíndromo o no y
almacenará en el buffer2 cadenas de texto con el resultado. Estas cadenas de texto tendrán en siguiente formato:
La palabra pal si/no es un palíndromo
Donde pal es la correspondiente palabra leída del buffer1
 El hilo Consumidor final recogerá las cadenas de texto del buffer2 y las irá almacenando en un fichero.
 Todos los hilos deben ejecutarse de manera concurrente, coordinando sus operaciones mediante semáforos.
 El programa acabará tras finalizar la lectura de palabras del fichero.
Práctica Final 2
 El tamaño del buffer circular buffer1 será TamBuffer1 (primer argumento al programa). El tamaño del buffer circular
buffer2 será fijo: 5, es decir, permitirá almacenar como máximo 5 cadenas de caracteres en cada momento.
En las pruebas es importante que el número de palabras del fichero sea mayor que el tamaño que se dé al buffer1 y mayor
que 5 (tamaño del buffer2), para comprobar que la coordinación con semáforos es correcta
Parte 2: Varios consumidores encargados de la comprobación de palíndromos
La aplicación a realizar tendrá ahora la siguiente sintaxis en su ejecución:
practica TamBuffer1 ficheroPalabras P
La diferencia con la parte 1 es que ahora en vez de un único hilo consumidor encargado de la comprobación de palíndromos y
generación de cadenas de caracteres con el resultado, se tendrán P, valor introducido como tercer argumento en la ejecución
del programa.
Anexo I – Comprobación de palíndromos
Aunque es fácil encontrar por Internet funciones en lenguaje C para la comprobación de si una palabra es un palíndromo o no,
ponemos aquí una sencilla, ya que el objetivo de esta práctica es la coordinación de procesos concurrentes, no esa
comprobación.
Función comprobación de palíndromos:
int palíndromo (char *palabra) {
 int esPalindromo = 1; // significa que sí lo es
 int i,j;

 j=strlen(palabra)-1;
 for (i=0; i<strlen(palabra)/2 && esPalindromo; i++, j--) {
 if (*(palabra+i)!=*(palabra+j)) {
 esPalindromo = 0; // No es palíndromo
 }
 }
return esPalindromo;
}


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
aber si me dais una solucion ya sea en windows o ubuntu
Dudas Generales
lealesdibua 0 2,108 Último mensaje 10 Mayo 2010, 19:48 pm
por lealesdibua
Filosofando un rato, ¿me dais vuestra opinión?
Foro Libre
Binary_Death 8 3,340 Último mensaje 22 Junio 2013, 17:23 pm
por Binary_Death
¿Les dais uso a las property en Python?
Scripting
Yidu 4 3,836 Último mensaje 8 Enero 2017, 12:14 pm
por Yidu
(Encuesta) ¿Que uso le dais al foro? « 1 2 3 »
Foro Libre
RevolucionVegana 23 9,266 Último mensaje 27 Julio 2017, 05:20 am
por Randomize
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines