elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Como crear un Array de Array's en C++?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Como crear un Array de Array's en C++?  (Leído 1,876 veces)
welms28

Desconectado Desconectado

Mensajes: 2


Ver Perfil
¿Como crear un Array de Array's en C++?
« en: 7 Febrero 2014, 17:35 pm »

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


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ¿Como crear un Array de Array's en C++?
« Respuesta #1 en: 7 Febrero 2014, 18:17 pm »

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
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. using std::endl;
  5.  
  6. #include <cstring>
  7. using std::strcmp;
  8. using std::strcpy;
  9.  
  10. const int max_palabras = 4;
  11. const int chars_x_palabra = 32;
  12.  
  13. int main()
  14. {
  15.   char palabra[max_palabras][chars_x_palabra];
  16.   char aux[chars_x_palabra];
  17.   int num_palabras = 0;
  18.  
  19.   for (int i = 0; i != max_palabras; ++i){
  20.      cout << "Introduce una palabra: ";
  21.      cin >> aux;
  22.  
  23.      int j;
  24.      for (j = 0; j != num_palabras && strcmp(aux, palabra[j]); ++j)
  25.         ;
  26.      if (j == num_palabras)
  27.         strcpy(palabra[num_palabras++], aux);
  28.      else
  29.         cout << "Palabra repetida" << endl;
  30.   }
  31.  
  32.   for (int i = 0; i != num_palabras; ++i)
  33.      cout << "Palabra " << (i + 1) << ": " << palabra[i] << endl;
  34.  
  35.   return 0;
  36. }

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


En línea

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Copiar parte de una array a otra array
Programación Visual Basic
sircid 3 4,980 Último mensaje 19 Diciembre 2007, 11:27 am
por LeandroA
como crear un array de parametro?
Programación Visual Basic
ricardovinzo 1 1,861 Último mensaje 20 Octubre 2008, 06:33 am
por cassiani
Convertir Array de php a Array de javascript
PHP
WHK 0 4,268 Último mensaje 23 Enero 2012, 18:05 pm
por WHK
Cómo crear una "brecha" en un array
Programación C/C++
0xDani 5 2,962 Último mensaje 25 Abril 2013, 15:31 pm
por 0xDani
array y limite de array sobrepasado...
Programación C/C++
bash 3 2,450 Último mensaje 31 Enero 2017, 22:15 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines