Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Duda con un codigo en C++
Autor Mensaje
YamiC Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4
Agradecimientos dados: 3
Agradecimientos: 5 en 2 posts
Registro en: Jun 2014
Mensaje: #1
Question Duda con un codigo en C++ Dudas y recomendaciones Algoritmos y Estructuras de Datos
Hola! Tengo un problema con un codigo simple, la idea seria capturar un numero por teclado, e inmediatamente despues, capturar una linea de texto por teclado. El tema es que cuando ingreso el numero, es como si saltea el comando de capturar la linea de texto, y sigue con el resto del codigo. No se si se entiende bien lo que planteo, no tengo tanto lenguaje tecnico para explicar las cosas jaja. El primer cin.get lo puse para ver si es que el comando funcionaba bien, y funciona genial si antes no ingreso un numero. Ya le di mil vueltas y no entiendo porque pasa, si me darian una mano estaria re mil re agradecida.

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{

int numero;
char frase1 [50];
char frase2 [50];

cin.get (frase1, 50);
cin >> numero;
cin.get (frase2, 50);

cout << "El numero es " << numero << ", la primera frase es '" << frase1 << "' y la segunda frase es " << frase2 << endl;

system("PAUSE");
return EXIT_SUCCESS;
}
11-06-2014 23:05
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dios Sin conexión
Presidente del CEIT
.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.057
Agradecimientos dados: 32
Agradecimientos: 160 en 132 posts
Registro en: Dec 2011
Mensaje: #2
RE: Duda con un codigo en C++
Probá poniendo cin.ignore(); después de cin>>numero;

Es un tema de cómo C++ maneja los flujos de entrada y salida, y deja "colgado" un caracter '\n' al final del buffer, y como cin.get() lee hasta que encuentra un '\n', el primer carácter que encuentra es ese, considera que ya escribiste la línea y sigue como si nada.

Si te manejás con el inglés, podés ver este artículo al respecto: http://www.cplusplus.com/forum/articles/6046/

«(…)Se arman paquetes… ¿eh?… tecnológicos… tecnológicos portes de… en donde están… este… interrelacionados con las otras capas.(…)»
(Este mensaje fue modificado por última vez en: 11-06-2014 23:39 por Dios.)
11-06-2014 23:36
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Dios recibio 1 Gracias por este post
YamiC (24-06-2014)
sebasthian777 Sin conexión
Presidente del CEIT
mi propio camino NINGA
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.919
Agradecimientos dados: 43
Agradecimientos: 22 en 20 posts
Registro en: Nov 2011
Mensaje: #3
RE: Duda con un codigo en C++
La diferencia esta en que el operador ">>" es para extraer la entrada formateandola, y el get, es para entradas sin formato.
Como dijo God, es por temas de flojo...

Sin embargo, podes optar (si estas aprendiendo c) en usar un solo grupo de metodos para trabajar y no mixarlos para ahorrarte estos problemas.

o usas solo los ">>" o usas solo los metodos que son sin formato, tene en cuenta que si usas el get, o el getline, te vas a encontrar con situaciones donde vas a tener que transformar por ejemplo:
char * buff = "12";
en
int numero = 12;

para lograr estas cosas, tenes un grupo de funciones en las librerias de C, como por ejemplo
itoa (integer to ascii)
atoi (ascii to integer)

o por ejemplo, para formatear la salida a la hora de imprimir en pantalla, podes usar el


sprintf("12","%d",numero); //Te lo convierte a base decimal
sprintf("12","%x",numero) //Te lo convierte a base hexadecimal
sprintf("12","%o",numero) //Te lo convierte a base octal, dicen las malas lenguas que cada vez que se usa el "%o" muere un niño de tristeza



C tiene la particularidad, que podes hacer lo mismo de 3 millones de forma diferente... Esta bueno conocer 2 o 3...

PD:

Cuando vas a tirar codigo en el foro, usa los tags para Codigo...

SI le borras el guion bajo vas a ver que podes tirar codigo ahi dentro y te lo deja bonito como el que puse.
[_code=c][_/code]

Tambien lo podes hacer con el mouse dandole click en el combo que esta entre el icono de funciones y el televisor para agregar videos...

Lo que esta bueno, es que viene con un compilador, que te permite probar el codigo directo desde el foro, fijate que dice alado de una tuerca y una flecha, "Compilar y ejecutar código"

Abrazo

(19-11-2013 11:48).py escribió:  
(19-11-2013 11:46)sebasthian777 escribió:  
(19-11-2013 11:43).py escribió:  Terminemos Hurd.
Prefiero dejarle ese laburo a gente sin vida social y que no tenga sexo.
Cuando te casas? Asi voy armando el Gannt.
(Este mensaje fue modificado por última vez en: 12-06-2014 09:18 por sebasthian777.)
12-06-2014 09:14
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] sebasthian777 recibio 1 Gracias por este post
YamiC (24-06-2014)
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)