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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  No entiendo la funcion del cin en este programa Arreglo de caracteres
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No entiendo la funcion del cin en este programa Arreglo de caracteres  (Leído 3,053 veces)
CATBro

Desconectado Desconectado

Mensajes: 156


Envidio la manera de pensar de Caboose


Ver Perfil
No entiendo la funcion del cin en este programa Arreglo de caracteres
« en: 8 Julio 2012, 04:16 am »

Que onda! No entiendo para que poner ese cin ????

Código
  1. /*********************************
  2. *    Arreglos de caracteres      *
  3. *********************************/
  4.  
  5. #include <iostream>
  6. using std::cout;
  7. using std::endl;
  8. using std::cin;
  9.  
  10. int main()
  11. {
  12.        char cadena1[ 20 ]; // reserva 20 caracteres
  13.        char cadena2[] = "literal de cadena" ; // reserva 17 caracteres
  14.  
  15.        cout << "Escribe la cadena \"hola todos\" : ";
  16.        cin >> cadena1;
  17.  
  18.        cout << "cadena1 es: " << cadena1 << "\ncadena2 es: " << cadena2;  
  19.  
  20.        cout << "\ncadena1 con espacios entre caracteres es:\n";  
  21.  
  22.        for ( int i = 0; cadena1[ i ] != '\0'; i++ )
  23.        {
  24.                cout << cadena1[ i ] << " " ;
  25.        }// fin de for
  26.  
  27.        cin >> cadena1;  //<------------------------------------------------------------Esto de aqui no lo entiendo, no me deja introducir nada el programa se brinca a la siguiente linea e imprime el  //resto del arreglo de caracteres: todos
  28.        cout << "\ncadena1 es: " << cadena1 << endl;
  29.  
  30.        return 0;
  31.  
  32. }// fin de main
  33.  
  34.  

La salida del programa es la siguiente

Escriba la cadena "hola todos": hola todos
cadena1 es : hola
cadena2 es : literal de cadena
cadena1 con espacios entre caracteres es:
h o l a
cadena1: todos

El problema es donde señalo en el codigo el cin, al momento de llegar a esa parte no me deja introducir nada el programa , se brinca a la siguiente linea y en lugar de imprimir solamente "hola" imprime "todos"

Saludos


En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: No entiendo la funcion del cin en este programa Arreglo de caracteres
« Respuesta #1 en: 8 Julio 2012, 07:45 am »

Hola! nose de donde sacaste el codigo pero esta bueno para entender como trabaja cin con el bufer del teclado... Cuando vos ingresas "hola todos", el primer cin lo unico que almacena en cadena1 es "hola" y esto se debe a que cin solo lee hasta encontrar un blanco(osea un espacio, tabulacion, salto de linea), en este caso leyo hasta encontrar el espacio. ¿¿Pero que pasa con "todos"??? esta porcion del string queda en el bufer del teclado... Luego el segundo cin lee del bufer la palabra "todos" sin dejarte ingresar nada


Saludos


En línea

Ahorrate una pregunta, lee el man
CATBro

Desconectado Desconectado

Mensajes: 156


Envidio la manera de pensar de Caboose


Ver Perfil
Re: No entiendo la funcion del cin en este programa Arreglo de caracteres
« Respuesta #2 en: 8 Julio 2012, 21:17 pm »

El libro es C++ como programar sexta edicion de Deitel, voy en el capitulo 7 y nunca el autor menciona ese comportamiento del cin, una pregunta esa funcion del cin solo la puedo observar cuando uso arreglo de caracteres?

Saludos!
En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: No entiendo la funcion del cin en este programa Arreglo de caracteres
« Respuesta #3 en: 8 Julio 2012, 21:22 pm »

Normalmente pasa lo que ha mencionado durasno cuando es una cadena de caracteres, ya que es cuando se suele introducir un espacio. Pero si estás pidiendo un número y pones un espacio, también te lo deja por la mitad.

Saludos.
En línea

rmhak

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: No entiendo la funcion del cin en este programa Arreglo de caracteres
« Respuesta #4 en: 9 Julio 2012, 15:58 pm »

El cin siempre que lo uses y para el tipo de datos que lo uses se comporta igual, solo lee hasta un espacio, un tabulador, un salto de línea. Es un flujo de entrada.
Al introducir "hola todos" estás escribiendo hola(espacio)todos(salto de línea). El primer cin lee hasta el espacio y el segundo cin lee hasta el salto de línea por eso brinca la línea y no te deja escribir. Si al final del programa introduces un tercer cin si podrías escribir. Un string no es un tipo básico de c++ y aunque no uses un arreglo y usases un string ocurriría lo mismo, al igual que con cualquier tipo básico (char, int, float...).

Te dejo un ejemplo de como leer una línea completa en c++ (http://www.cplusplus.com)
Código
  1. // getline with strings
  2. #include <iostream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. int main () {
  7.  string str;
  8.  cout << "Please enter full name: ";
  9.  getline (cin,str);
  10.  cout << "Thank you, " << str << ".\n";
  11. }
  12.  

Un saludo.
En línea

CATBro

Desconectado Desconectado

Mensajes: 156


Envidio la manera de pensar de Caboose


Ver Perfil
Re: No entiendo la funcion del cin en este programa Arreglo de caracteres
« Respuesta #5 en: 11 Julio 2012, 00:46 am »

Muchas gracias ya mas claro, ya solo queda practicar
Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Convertir cadena en una arreglo de caracteres
Programación Visual Basic
Javilondo 3 10,557 Último mensaje 29 Octubre 2008, 23:01 pm
por Javilondo
modificar arreglo de cadena de caracteres
Programación C/C++
kworld 2 6,267 Último mensaje 31 Mayo 2010, 15:38 pm
por Littlehorse
Duda con puntero a arreglo de caracteres
Programación C/C++
dato000 5 4,810 Último mensaje 30 Noviembre 2012, 21:13 pm
por xiruko
por favor ayuda con este programa no entiendo como hacerlo
Programación C/C++
enrix507 1 2,386 Último mensaje 16 Julio 2014, 06:41 am
por engel lex
ayuda no entiendo como hacer este programa
Programación C/C++
ESTUDIANTEant 1 2,357 Último mensaje 15 Marzo 2015, 13:29 pm
por NOIS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines