Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ingresar parrafos usando cadenas

Estas en el tema de Ingresar parrafos usando cadenas en el foro de C/C++ en Foros del Web. buenas a todos. Estamos estudiando el tema de cadenas y punteros en la universidad y me han dado algunos problemas para resolver, la mayoria de ...
  #1 (permalink)  
Antiguo 22/06/2013, 17:32
 
Fecha de Ingreso: abril-2013
Mensajes: 8
Antigüedad: 9 años, 7 meses
Puntos: 0
Ingresar parrafos usando cadenas

buenas a todos.
Estamos estudiando el tema de cadenas y punteros en la universidad y me han dado algunos problemas para resolver, la mayoria de ellos dicen algo como esto:

"escribir un programa que lea un texto de maximo 15 lineas de 60 caracteres cada linea"

y luego me piden determinar algunas cosas del texto como el numero de veces que se repite una letra o palabra....

lo que yo no se es como ingresar un texto de esa forma solo he aprendido a ingresar textos de una determinada cantidad de caracteres pero no se como hacer con el numero de lineas.

cualquier ayuda sera bienvenida.
  #2 (permalink)  
Antiguo 22/06/2013, 23:27
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 10 años, 4 meses
Puntos: 22
Respuesta: Ingresar parrafos usando cadenas

Hola punky72.

¿En C o C++ ?

Saludos.
  #3 (permalink)  
Antiguo 23/06/2013, 01:58
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 10 años, 5 meses
Puntos: 127
Respuesta: Ingresar parrafos usando cadenas

Sencillo. Si se supone que el máximo es 60 caracteres por línea y 15 líneas, será una estructura 15*60 que se puede simular usando un vector de vectores de chars

Ese vector puede ser o bien una construcción arcaica que sería un array de array de chars expresados y no con literales sino con el valor hexadecimal o decimal en sí (si fueran literales sería dos caracteres por carácter, el carácter y el nulo que lo sigue). Cada línea será una estructura delimitada por { y } hasta un máximo de 15.

Código C++:
Ver original
  1. char v[15][60] = {
  2.     {0x61}, // a
  3.     {0x78}, // x
  4.     {0x79}, // y
  5.         {"ejemplo de línea de tantos caracteres más 1"}
  6.     };

O también usar un vector de vectores de chars que puedes ir rellenando siempre que quieras. Dado que puedes calcular su tamaño actual puedes poner fin cuando cada vector interno tenga 60 caracteres y un total de 15 vectores.

Código C++:
Ver original
  1. #include <vector>
  2. ...
  3. std::vector< std::vector<char> >

Probaré con un vector de strings, que es aún más dinámico

Código C++:
Ver original
  1. std::vector< string > v;
  2.     int c = 0;
  3.     do
  4.     {
  5.         c++;
  6.         string cadena;
  7.         cout << "Introduce una linea:" << endl;
  8.         cin >> cadena;
  9.         cadena.resize( (size_t) 15); //reduce la cadena a 15 caracteres
  10.         v.push_back(cadena); // inserta en el vector la cadena
  11.  
  12.     } while (c < 60);
  13.  
  14.     cout << "El texto total es:" << endl;
  15.     for (vector<string>::iterator it= v.begin(); it < v.end(); ++it )
  16.     {
  17.         cout << *it << endl; // recorre el vector de strings e imprime cada cadena (*it)
  18.     }
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Última edición por dontexplain; 23/06/2013 a las 02:19
  #4 (permalink)  
Antiguo 23/06/2013, 10:07
 
Fecha de Ingreso: abril-2013
Mensajes: 8
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Ingresar parrafos usando cadenas

hoola ecfisa.
es en c++

gracias dontexplain probare con el primero, porque no entiendo lo del vector de strings

Última edición por punky72; 23/06/2013 a las 10:22
  #5 (permalink)  
Antiguo 23/06/2013, 12:13
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 10 años, 5 meses
Puntos: 127
Respuesta: Ingresar parrafos usando cadenas

Cita:
Iniciado por punky72 Ver Mensaje
hoola ecfisa.
es en c++

gracias dontexplain probare con el primero, porque no entiendo lo del vector de strings
Te aseguro que es más sencillo usar un vector de strings.

El vector no es más que un array , pero dinámico y con gestión automática de memoria, en que puedes remover elementos, insertar, reordenar, limitar, recorrer de una manera más sencilla de como lo harías con un array típico.

Un vector de strings no sería más que un array de strings.

Te aconsejo usarlos, previenen fallos, además de que es bastante más sencillo manejarlo, como puedes ver en el código que puse.

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #6 (permalink)  
Antiguo 23/06/2013, 12:43
 
Fecha de Ingreso: abril-2013
Mensajes: 8
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Ingresar parrafos usando cadenas

Cita:
Iniciado por dontexplain Ver Mensaje
Te aseguro que es más sencillo usar un vector de strings.
he intentado usar el vector de strings.. pero me da una serie de errores al compilar.
- "string is not a member of std"
  #7 (permalink)  
Antiguo 23/06/2013, 12:57
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 10 años, 5 meses
Puntos: 127
Respuesta: Ingresar parrafos usando cadenas

Olvidaste insertar quizás las cabeceras?

Código C++:
Ver original
  1. #include <string>
  2. #include <vector>
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #8 (permalink)  
Antiguo 23/06/2013, 13:10
 
Fecha de Ingreso: abril-2013
Mensajes: 8
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Ingresar parrafos usando cadenas

haber este es el que me enviaste:
Código C++:
Ver original
  1. #include<stdio.h>
  2. #include<iostream.h>
  3. #include<string.h>
  4. #include<vector>
  5. void main()
  6. {
  7. std::vector<string>v;
  8.     int c=0;
  9.     do
  10.     {   c++;
  11.         string cadena;
  12.         cout << "Introduce una linea:" << endl;
  13.         cin >> cadena;
  14.         cadena.resize( (size_t) 15); //reduce la cadena a 15 caracteres
  15.         v.push_back(cadena); // inserta en el vector la cadena
  16.  
  17.     } while (c < 60);
  18.  
  19.     cout << "El texto total es:" << endl;
  20.     for (vector<string>::iterator it= v.begin(); it < v.end(); ++it )
  21.     {
  22.     cout << *it << endl; // recorre el vector de strings e imprime cada cadena (*it)
  23.     }
  24. }
estoy usando el borland c++.
disculpad que no se mucho del tema ya que en este curso solo vemos c++ un mes y medio, para darnos algunas nociones.
  #9 (permalink)  
Antiguo 23/06/2013, 14:38
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 10 años, 5 meses
Puntos: 127
Respuesta: Ingresar parrafos usando cadenas

Olvidas algunas cosas como indicar el namespace por defecto. Sin él difícilmente funcionen objetos como cout, cin, salvo aquellos que lleven std:: delante.

Código C++:
Ver original
  1. using namespace std;

string al ser una cabecera para C++ y no para C omitiría el .h, al igual que iostream

Código C++:
Ver original
  1. #include <string>

Lo subí
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Etiquetas: cadenas, caracteres, párrafo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:33.