Práctica 2: Vectores de strings dinámicos. (1 sesión)

Objetivos:

Iniciarse en el manejo de los punteros en C++. Practicar el uso de los operadores de C++ para reservar y liberar memoria de forma dinámica. Aprender a crear vectores dinámicos.


La práctica tiene esta vez sólo una parte

Antes de nada, tal como hacíamos en la práctica 1, crearemos un proyecto del tipo 'Console Application' (seleccionando los items "File->New->Other->ConsoleWizard" del menú).

En la práctica vamos a crear en memoria una lista de palabras (un vector de strings) extraídas de un fichero texto, conservando su orden de aparición dentro del archivo. El vector de strings es creado de forma dinámica y su número de elementos es igual al número de palabras del fichero. Una vez creado el vector, el usuario podrá eliminar algunas palabras de lista, sustituir otras, o podrá visualizar el texto resultante.

Desarrollo.

Crearemos un programa que realice las siguientes tareas:

  1. Al comenzar la ejecución del programa se le pide al usuario el nombre del fichero, se abre éste y se cuenta el número de palabras incluidas en él (se contabilizan leyendo el archivo palabra por palabra). A continuación, se cierra el fichero.
  2. Se crea de forma dinámica el vector de palabras (con el tamaño justo para incluir todas las palabras del archivo).
  3. Se abre otra vez el fichero y se lee de nuevo el conjunto de palabras, pero esta vez, cada vez que es leída una palabra ésta es incluida dentro del vector. Una vez finalizada la lectura, se cierra el archivo.
  4. Se presenta en pantalla un menú con las siguientes opciones:
    1. Escribir en la pantalla la lista de palabras.
    2. Escribir la lista en orden inverso.
    3. Eliminar todas las apariciones de una palabra dentro de la lista (por ejemplo, sustituyendo la aparición de la palabra por la cadena vacía).
    4. Sustituir una palabra por otra (buscando dentro de la lista todas las apariciones de la palabra antigua y sustituyéndola por la nueva).
    5. Salir del programa.
  5. Antes de salir del programa se debe liberar toda la memoria ocupada por el vector de palabras.

NOTA1: El programa se dividirá en varias funciones, una para cada una de las tareas del menú (excepto para la última).

NOTA2: El siguiente trozo de código C++ lee un fichero de tipo texto, palabra por palabra.

#include <fstream>
....

ifstream f;
string palabra;
    f.open("...");
    while (!f.eof())
    {
        f >> palabra;
        ....
    }
    f.close();
    .....