¿Como crear un Array de Array's en C++?

Iniciado por welms28, 7 Febrero 2014, 17:35 PM

0 Miembros y 1 Visitante están viendo este tema.

welms28

Buenas tardes,

Estoy haciendo una practica de c++ para la universidad y en esta practica no nos dejan utilizar la clase String (menuda tontería ¿no?). En la practica se trabaja con palabras. Mi problema es:

Estoy haciendo un programa, que como resumen trata de que el usuario introduce una palabra y yo tengo que mirar si ya se ha introducido anteriormente. Lo he hecho con ficheros, pero resulta que tampoco nos dejan hacerlo con ficheros, solo con array's. Lo que debo crear es una especie de Historial.

Gracias

rir3760

Si hay un limite en el máximo de palabras del historial y este es relativamente pequeño basta con declarar un array de arrays de caracteres:
Código (cpp) [Seleccionar]
#include <iostream>
using std::cin;
using std::cout;
using std::endl;

#include <cstring>
using std::strcmp;
using std::strcpy;

const int max_palabras = 4;
const int chars_x_palabra = 32;

int main()
{
   char palabra[max_palabras][chars_x_palabra];
   char aux[chars_x_palabra];
   int num_palabras = 0;
   
   for (int i = 0; i != max_palabras; ++i){
      cout << "Introduce una palabra: ";
      cin >> aux;
     
      int j;
      for (j = 0; j != num_palabras && strcmp(aux, palabra[j]); ++j)
         ;
      if (j == num_palabras)
         strcpy(palabra[num_palabras++], aux);
      else
         cout << "Palabra repetida" << endl;
   }
   
   for (int i = 0; i != num_palabras; ++i)
      cout << "Palabra " << (i + 1) << ": " << palabra[i] << endl;
   
   return 0;
}


Pero si debes aceptar un numero arbitrario de palabras lo mejor es utilizar un puntero de tipo "char **" junto con las funciones malloc, calloc y realloc.

Un detalle que debe cambiarse si o si en el programa es el uso de cin por una forma segura de leer una palabra evitando el desbordamiento.

Ya por ultimo yo no lo haría de esa forma, si estas aprendiendo C++ lo políticamente correcto es utilizar vector + string + getline y así terminas con un programa mas corto y seguro.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language