UNIVERSIDAD DE COSTA RICA CI-0202 Principios de Informática ESCUELA DE CIENCIAS DE LA Profesor Adolfo Di Mare COMPUTACION E INFORMATICA Tarea programada Nº 7 BaseInversa() y Palindromo() Carnet: ________ Nombre: __________________________________ Use como base el programa Parcial2.cpp, e implemente las 2 funciones BaseInversa() y Palindromo() del segundo examen parcial. Suponga que su número de carnet es el "AxYYzz". como resultado de su tarea debe entregar lo siguiente: - Documentación impresa, con una portada que tenga todos sus datos. - Programa completo en el archivo "AxYYzz.cpp". - Documentación formato Word.doc en el archivo "AxYYzz.doc" NOTA: Este programa trabaja sólo con la pantalla. No escribe en la impresora. ================================= Políticas de Corrección de Tareas ================================= 1) Correcta indentación del código fuente. 2) Correcto espaciado del código fuente. 3) Código fuente escrito de manera que se legible y claro. 4) Uso de indentificadores significativos. 5) Uso de Doxygen para la especificación de todos los métodos, funciones y campos de clase. :::::::::::: Parcial2.cpp :::::::::::: // Parcial2.cpp (C) 2006 adolfo@di-mare.com /** \file Parcial2.cpp \brief Solución al Segundo Examen Parcial. \author Adolfo Di Mare \date 2006 */ #include // cin && cout #include // setw() #include /** Extrae y graba en \c cout los dígitos en base \c base para el número \c num - Separa cada dígito del siguiente con un punto. - Retorna \c false sólo si \c base es cero o uno (y no hace nada). - Siempre los graba en orden inverso. - Ejemplos: - 0 ==> .0. - 10<10> ==> .0.1. - 10<2> ==> .0.1.0.1. - 10<3> ==> .1.1. */ bool BaseInversa( int num, int base ) { // se asegura de que la base sea un número positivo // aseguramos que base sea positiva // no cambio la base porque es positiva // ver si la base es 0 o 1 // no hago nada porque la base != 0 || base != 1 // ver si num < 0 // convertir a positivo // no cambio num porque es positivo // crear variable modulo // realizar los cálculos // mientras num != 0 // obtener modulo // dividir num / base // desplegar dígito return true; } #include // strlen() #include // toupper() /** Retorna \c true cuando \c hilera[] es un palíndromo. - Una hilera es un palíndromo si se lee igual a la de derecha a izquierda que de izquierda a derecha. - Esta función omite los blancos. - Una hilera nula siempre es un palíndromo. - Una hilera en blanco siempre es un palíndromo. */ bool Palindromo( const char hilera[] ) { // obtener longitud de la hilera // especificar un caracter blanco ' ' -> legibilidad codigo // especificar contadores: ascendente y descendente // Ver casos especiales // hilera es nula -> palíndromo // digo que la hilera si es un palíndromo // me salgo de la función // si hay caracteres -> tengo que seguir viendo si es un palíndromo // hilera esta llena de blancos -> palíndromo for (???) { // probar si no me encuentro un caracter no nulo // efecto rebote -> 1era posición no nula de izq a der // sigo contando nulos -> para verificar hilera está llena de nulos } // fin del for // como la longitud de la hilera == contador -> todos nulos -> palindromo // digo que la hilera sí es un palindromo // me salgo de la funcion // tengo seguir viendo si la hilera es un palíndromno // ver 1er caracter no nulo de la derecha for (???) { // probar si no me encuentro un caracter no nulo // efecto -> 1era posición no nula de der a izq // sigo contando nulos -> para verificar hilera esta llena de nulos } // fin del for // IZQ -> 1er caracter no nulo de izq a der // DER -> 1er caracter no nulo de der a izq // hacer un "for doble" que vea si la palabra es o no palíndromo for (???) { // saltarme los nulos // comparar posiciones // no hago nada -> seguir viendo si no hay un nulo // digo que la hilera no es un palíndromo // me salgo de la función } // fin del for return true; // digo que la hilera si es un palíndromo // me salgo de la función } /// Ejecuta y Palindromo( hilera ) y reporta el resultado en \c cout. /// - Usa un formato bonito: /// - Palíndromo("radar") ==> true /// - Palíndromo("Dabale arroz a la Zorra el Abad") ==> true void Reporta_Palindromo( const char hilera[] ) { bool res = Palindromo( hilera ); cout << "Palíndromo(" << '"' << hilera << '"' << ") ==> "; if (res) { cout << "true"; } else { cout << "false"; } cout << endl; } /// Programa principal. /// - Ejecuta la solución de cada una de las preguntas del examen. int main() { int i; for (i=2; i<12; ++i) { cout << endl << "10 en base " << i << ' '; BaseInversa( 10, i ); } cout << endl << endl; Reporta_Palindromo("radar"); Reporta_Palindromo("Dabale arroz a la Zorra el Abad"); Reporta_Palindromo("rabanote"); Reporta_Palindromo("1 23 45 43 2 1"); Reporta_Palindromo("como moco"); Reporta_Palindromo(" como omoc "); return 0; } // EOF: Parcial2.cpp