Download Desarrollar un programa que permite al operador introducir una lista

Document related concepts

Secuencia palindrómica wikipedia , lookup

Reumatismo palindrómico wikipedia , lookup

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[Li1] para cada i=0, 1, …, L1.
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%)