elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 03:03  


Tema destacado: ¡Aprende hacking con práctica! - WarZone, el wargame de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Secuencias en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Secuencias en C++  (Leído 362 veces)
eleon

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Secuencias en C++
« en: 23 Enero 2012, 17:59 »

Buenas tardes:

Estoy buscando la forma de introducir secuencias en C++, esto es, leer (cin) un texto o una secuencia de números de los cuales no sabemos cuál va a ser el tamaño. He buscado por internet y he encontrado cosas acerca de la librería string pero por lo que he visto es obligatorio indicar el número de elementos que va a tener la secuencia.

Las tablas (o arrays) no me sirven puesto que como ya he comentado la diferencia entre una tabla y una secuencia es que en la secuencia no sabemos cuántos elementos se van a introducir.

Gracias y saludos.


En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Secuencias en C++
« Respuesta #1 en: 23 Enero 2012, 18:20 »

Usa clases de la STL como list, vector, deque... te permiten modificar su tamaño dinamicamente:

http://cplusplus.com/reference/stl/

concretamente:

http://cplusplus.com/reference/stl/vector/

http://cplusplus.com/reference/stl/list/

http://cplusplus.com/reference/stl/deque/


En línea

eleon

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: Secuencias en C++
« Respuesta #2 en: 23 Enero 2012, 18:44 »

Gracias por tu tiempo, en lo que me respondían he seguido buscando por internet y encontré lo esto: http://www.clubdesarrolladores.com/articulos/mostrar/70-cpp-string-class-clase-cpp-para-cadenas-de-caracteres

He compilado el siguiente código usando la información de ese artículo:

Código
#include <iostream>
using namespace std;
 
int main()
{
   string s1;
 
   cin >> s1;
   cout << s1 << endl;
   cout << s1[4];
   cin;
   return 0;
}

Bien, el caso es que no da ningún error y al usar la función "string" no necesito definir el tamaño. Como podéis observar con el "cin" capturo tantos caracteres como introduzca el usuario, luego puedo imprimir el mensaje completo o acceder a solo uno de los elementos.

El único contra que he encontrado es que si introduces un texto con espacios, no guarda lo que haya después de un espacio.

Mi duda es: ¿es correcto el uso de esta forma del "string"?. ¿Hay alguna forma de manipular esta función para que también guarde los espacios y lo que haya después?. ¿Hay algún otro tipo de "string" que lea números-operandos?, es decir, no el caracter "1" sino el número 1 con el que se puede operar.

PD: Le echaré un vistazo a los links Akai.
« Última modificación: 23 Enero 2012, 19:10 por eleon » En línea

eleon

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: Secuencias en C++
« Respuesta #3 en: 23 Enero 2012, 21:46 »

Buenas:

A ver si me podéis responder otra duda: en las tablas y strings ¿siempre hay que dejar un último elemento para la marca final (\0)?, quiero decir, si queremos crear una tabla o un string de 30 elementos, hacemos "string cadena[30]", donde podemos usar los espacios del 0 al 29 (30 elementos) pero nunca el último (posición 30), ¿es asi?. Esto lo digo porque en el caso del string me da error si intento utilizar el último elemento, sin embargo en una tabla normal no da error ("char tabla[30]"), suponía que el string era una clase que definía una tabla y unas funciones asi que en cuanto a elementos se debería comportar igual.

Akai, he mirado los links y he encontrado esta otra página donde vienen explicados los vectores de forma más sencilla y en castellano: http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/Biblioteca_Est%C3%A1ndar_de_Plantillas/Vectores

Lo que ocurre es que aqui el vector no lo define en una clase sino dentro del main, ¿es lo mismo que lo que tú me has indicado?.

Perdonad las molestias. Saludos!
« Última modificación: 23 Enero 2012, 21:50 por eleon » En línea

rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: Secuencias en C++
« Respuesta #4 en: 24 Enero 2012, 01:28 »

El único contra que he encontrado es que si introduces un texto con espacios, no guarda lo que haya después de un espacio.

Mi duda es: ¿es correcto el uso de esta forma del "string"?
Es correcto. En cuanto a leer una linea de texto puedes utilizar la función "getline", si necesitas ejemplos de su uso utiliza el buscador de los foros.

A ver si me podéis responder otra duda: en las tablas y strings ¿siempre hay que dejar un último elemento para la marca final (\0)?
Solo si se trata de un array de caracteres (por ejemplo "char linea[100]") y en el se piensa almacenar una cadena (el '\0' indica el final de ella).

quiero decir, si queremos crear una tabla o un string de 30 elementos, hacemos "string cadena[30]", donde podemos usar los espacios del 0 al 29 (30 elementos) pero nunca el último (posición 30), ¿es asi?.
Me parece una confusión:

* Con los arrays de caracteres no hay opción mas que reservar un elemento para el cero porque es obligatorio (si no hay '\0' no hay cadena).

* Cuando se declara un array se indica el numero de elementos, por ejemplo:
Código
string linea[100];
Esa declaración indica que el array consta de 100 elementos a los cuales se accede mediante los indices 0 .. 99. El elemento "linea[100]" no existe ya que seria el indice del elemento 101 y no hay tal en el array.

Un saludo
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
eleon

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: Secuencias en C++
« Respuesta #5 en: 24 Enero 2012, 15:46 »

Citar
Me parece una confusión:

* Con los arrays de caracteres no hay opción mas que reservar un elemento para el cero porque es obligatorio (si no hay '\0' no hay cadena).

* Cuando se declara un array se indica el numero de elementos, por ejemplo:
Código

Código
string linea[100];

Esa declaración indica que el array consta de 100 elementos a los cuales se accede mediante los indices 0 .. 99. El elemento "linea[100]" no existe ya que seria el indice del elemento 101 y no hay tal en el array.

Vale, si me había confundido en ese aspecto, gracias por aclarármelo. Por lo tanto en un string si lo declaramos con 100 elementos (índices del 0 al 99) podremos usar 99 elementos (índices del 0 al 98) ya que el último es la marca de fin.

Lo de cin.getline me ha venido de perlas, gracias por vuestro tiempo. Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Secuencias en pantalla en formato .gif
Software
Fredy 1 362 Último mensaje 7 Abril 2007, 00:30
por Eliuth
secuencia de entrada y secuencias
Programación C/C++
energiasolartermica 1 444 Último mensaje 31 Octubre 2009, 15:10
por choseone
secuencias
Programación C/C++
energiasolartermica 1 483 Último mensaje 1 Noviembre 2009, 03:05
por aguml
Algoritmo con secuencias
Programación C/C++
skwp 0 623 Último mensaje 1 Diciembre 2009, 18:35
por skwp
problemas con secuencias
Programación C/C++
energiasolartermica 1 532 Último mensaje 17 Diciembre 2009, 23:36
por Flakito81
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines