Document related concepts
Transcript
Programación Estructurada, 12_O, Prof. Gueorgi Khatchatourov Examen 3 Especificación general: Desarrollar programa que genere palíndromo de dada longitud, y luego lo almacena en un archivo. Comentarios y especificaciones particulares: Definimos el palíndromo como una cadena de literales simétrica, por ejemplo, 'adcda'. Su programa debe pedir del operador un número natural L que representa la longitud deseada de palíndromo. Por ejemplo, para 'adcda', L es 5. Si, por ejemplo, "char P[40];" representa arreglo donde su programa va almacenar cada cadena generada, entonces la cadena corriente representa un palíndromo siempre y cuando se cumple la ecuación P[i]==P[Li1] para cada i=0, 1, …, L1. También su programa debe pedir del operador un número N que representa el límite para el número de generaciones de cadenas aleatorias. Su programa debe generar al azar las cadenas de longitud L y revisar cada de ellas: si la cadena representa un palíndromo, o no. En el caso de respuesta positiva, el palíndromo encontrado se imprime a un archivo llamado "palin.txt" y luego el programa termina. En el caso contrario, el programa sigue generando nuevos cadenas, pero no más a N veces. Si todos N intentos de la generación sean negativos, el programa imprime texto "no encontró palíndromo" en el archivo "palin.txt" y termina. Para simplificar su programa, usted puede usar alfabeto reducido de cinco primeras letras (a,b,c,d,e), como hacíamos en clases. Un acto de generación de cadena y la revisión se es un palíndromo, debe realizar en una función int GEN_PAL( char *p_cad, int long); Supuestamente, esa función a través del puntero p_cad obtiene acceso a un arreglo declarado en 'main'. La función genera una cadena de literales y la almacena en ese arreglo; luego, revisa si la cadena es palíndromo o no. Regresa '1' en el caso positivo y '0' en el caso negativo. Por ejemplo, una llamada de esa función en 'main' puede aparecer como int E= GEN_PAL( P, L); donde P y L tienen el mismo sentido como arriba, y el valor asignado a E por resultado de la llamada será 1 si la función generó palíndromo en P, y 0 en el caso contrario. Evaluación tomará en cuenta los siguientes factores: - diseño lógico del programa (40%), - uso de punteros, (20%) - uso de funciones, (20%) - operaciones con archivos. (20%)