]> git.llucax.com Git - z.facultad/75.42/string.git/commitdiff
Se agrega un primera version del tp.
authorLeandro Lucarella <llucax@gmail.com>
Mon, 29 Sep 2003 05:13:24 +0000 (05:13 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Mon, 29 Sep 2003 05:13:24 +0000 (05:13 +0000)
Makefile
quicksort.h
tp4.cpp [new file with mode: 0644]
universalstring.h

index 08ee0b63368e6e80418a7672715541958cec186a..c2d282268c1ad02c26afac554d7904da5a849ac6 100644 (file)
--- 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
index 8326c72a9993ad3b336d50f6e4881feafec244ec..e290ff2a73a6a5f71bd066c12252b9b8f0d40a9e 100644 (file)
@@ -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 (file)
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 <llucare@fi.uba.ar>
+ * 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 <vector>
+#include <iostream>
+#include <cstdlib>
+#include <cstring>
+
+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;
+}
+
index 44fb64d16b2add7b1f6a54a7ae3143e078096d52..51f0e6c92c72e544c42a571e950ff51d732d8d83 100644 (file)
@@ -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$
  */