From b18e440563dabec6bef71cbfa954bc5e38c84ca6 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Mon, 29 Sep 2003 05:13:24 +0000 Subject: [PATCH 1/1] Se agrega un primera version del tp. --- Makefile | 13 +++-- quicksort.h | 2 +- tp4.cpp | 132 ++++++++++++++++++++++++++++++++++++++++++++++ universalstring.h | 2 +- 4 files changed, 140 insertions(+), 9 deletions(-) create mode 100644 tp4.cpp diff --git a/Makefile b/Makefile index 08ee0b6..c2d2822 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,8 @@ # Opciones para el compilador. #CXXFLAGS=-ansi -pedantic -Wall -O3 -CXXFLAGS=-ansi -pedantic -Wall -g3 -DDEBUG +CXXFLAGS=-ansi -pedantic -Wall -g3 +#CXXFLAGS=-ansi -pedantic -Wall -g3 -DDEBUG # Pruebas. TESTS= @@ -33,12 +34,10 @@ ascii.o: ascii.cpp ascii.h unicode.o: unicode.cpp unicode.h -#quicksort.o: quicksort.cpp quicksort.h - -#universalstring.o: universalstring.h universalstring.cpp - universalstring: ascii.o unicode.o universalstring.cpp +tp4: ascii.o unicode.o tp4.cpp + # Regla para borrar. clean: @@ -47,13 +46,13 @@ clean: # Preety-printing del código fuente. FUENTES=ascii.h ascii.cpp unicode.h unicode.cpp universalstring.h \ - quicksort.h quicksort.cpp + quicksort.h tp4.cpp code.ps: $(FUENTES) @enscript -j -Ecpp -U2 -C --fancy-header=squeeze --color -pcode.ps \ $(FUENTES) # Informe. -informe: code.ps corrida.txt +informe: code.ps @doxygen @cd latex && make refman.pdf && cd .. @doxygen Doxyfile.imprimible diff --git a/quicksort.h b/quicksort.h index 8326c72..e290ff2 100644 --- a/quicksort.h +++ b/quicksort.h @@ -9,7 +9,7 @@ * Puede copiar, modificar y distribuir este programa bajo los términos de * la licencia GPL (http://www.gnu.org/). * - * Creado: Mon Sep 22 21:00:15 ART 2003 + * Creado: dom sep 28 17:37:48 ART 2003 * * $Id$ */ diff --git a/tp4.cpp b/tp4.cpp new file mode 100644 index 0000000..77b0d31 --- /dev/null +++ b/tp4.cpp @@ -0,0 +1,132 @@ +/* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80: + * + * Taller de Programación (75.42). + * + * Ejercicio Número 4: + * Ordena texto ASCII o Unicode. + * + * Copyleft 2003 - Leandro Lucarella + * Puede copiar, modificar y distribuir este programa bajo los términos de + * la licencia GPL (http://www.gnu.org/). + * + * Creado: lun sep 29 01:37:10 ART 2003 + * + * $Id$ + */ + +#include "ascii.h" +#include "unicode.h" +#include "universalstring.h" +#include "quicksort.h" + +#include +#include +#include +#include + +using namespace std; + +/// String ASCII. +typedef UniversalString< Ascii > StringA; + +/// String Unicode. +typedef UniversalString< Unicode > StringU; + +/// Vector con strings ASCII. +typedef vector< StringA > VectorA; + +/// Vector con strings Unicode. +typedef vector< StringU > VectorU; + +/** + * Dibuja el menú en pantalla. + */ +void print_menu(void) { + cout << "Menu:" << endl; + cout << " 1. Ingresar frase al vector ASCII." << endl; + cout << " 2. Ingresar frase al vector Unicode." << endl; + cout << " 3. Copiar palabra de vector a vector." << endl; + cout << " 4. Ordenar vectores." << endl; + cout << " 5. Listar vectores." << endl; + cout << " 6. Salir." << endl; +} + +/** + * Obtiene la selección del menú del usuario. + */ +char get_entrada(void) { + char c; + cout << "Elija una opción: "; + cin >> c; + return c; +} + +/** + * Programa principal. + * Este es el programa que se encarga de resolver el trabajo práctico. + * + * \return EXIT_FAILURE si hubo un error, si no EXIT_SUCCESS. + */ +int main(void) { + // Creo vectores. + VectorA va; + VectorU vu; + // Strings temporales para obtener entrada de usuario. + StringA sa; + StringU su; + // Muestra menú. + print_menu(); + // Obtengo entrada del usuario. + char entrada = get_entrada(); + // Mientras no sea '6' (salir), se mantiene en el loop. + while (entrada != '6') { + // Mientras la entrada sea inválida, muestra mensaje de error. + while ((entrada < '1') || (entrada > '6')) { + cout << endl << endl << endl; + print_menu(); + cout << "Debe elegir un número entre 1 y 5!" << endl; + entrada = get_entrada(); + } + cout << endl; + switch (entrada) { + case '1': // Ingresa frase al vector ASCII + cout << "Ingrese frase al vector ASCII: "; + cin >> sa; + va.push_back(sa); + break; + case '2': // Ingresa frase al vector Unicode + cout << "Ingrese frase al vector Unicode: "; + cin >> su; + vu.push_back(su); + break; + case '3': // Copia palabra de vector a vector + // TODO: Hacer que vaya preguntando. Tipo: Desde Hasta número + // (cin >> desde >> hasta >> numero; con todos char). + break; + case '4': // Ordena vectores + quicksort(va, 0, va.size() - 1); + quicksort(vu, 0, vu.size() - 1); + break; + case '5': // Imprime vectores + cout << "Vector de strings ASCII:" << endl; + cout << " "; + copy(va.begin(), va.end(), + ostream_iterator< StringA >(cout, " \n")); + cout << endl; + cout << "Vector de strings Unicode:" << endl; + cout << " "; + copy(vu.begin(), vu.end(), + ostream_iterator< StringU >(cout, " \n")); + cout << endl; + break; + case '6': // Sale + continue; + } + cout << endl << endl; + print_menu(); + entrada = get_entrada(); + } + // Salió todo ok. + return EXIT_SUCCESS; +} + diff --git a/universalstring.h b/universalstring.h index 44fb64d..51f0e6c 100644 --- a/universalstring.h +++ b/universalstring.h @@ -9,7 +9,7 @@ * Puede copiar, modificar y distribuir este programa bajo los términos de * la licencia GPL (http://www.gnu.org/). * - * Creado: Mon Sep 22 21:00:15 ART 2003 + * Creado: sáb sep 27 15:38:29 ART 2003 * * $Id$ */ -- 2.43.0