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

Empezando en c++. Problema con "cin" y duda con "endl"

Estas en el tema de Empezando en c++. Problema con "cin" y duda con "endl" en el foro de C/C++ en Foros del Web. Buenas gente =) Estoy empezando a leer un libro que se llama "Beginning c game programming", y por ahora me resulto bastante sencillo, aun estando ...
  #1 (permalink)  
Antiguo 25/02/2009, 19:55
 
Fecha de Ingreso: octubre-2008
Mensajes: 47
Antigüedad: 15 años, 6 meses
Puntos: 0
Empezando en c++. Problema con "cin" y duda con "endl"

Buenas gente =)
Estoy empezando a leer un libro que se llama "Beginning c game programming", y por ahora me resulto bastante sencillo, aun estando en ingles, y divertido a la vez.
Pero llego un punto en el cual nose que pueda estar mal y es que al escribir un codigo como este:

Código:
 
// El mundo perdido
// Aventura de Mauri

#include <iostream>
using namespace std;
int main()
{
 char nombre;
 int tropas;
 
        cout << "\tMundo perdido";
        cout << "\nNombre:  ";
        cin >> nombre;
        
        cout << "\nIngrese cantidad de tropas: ";
        cin >> tropas;
        return 0;
}
En la consola llega a aparecer hasta "Nombre: " pero una vez que lo introduzco, y le doy a enter, se cierra sola :S, es decir en este caso no me aparece "Ingrese cantidad de tropas:".
A que se puede dever esto ?
Otro punto que no entendi es que algunas veces y en otras no utiliza "endl", por ejemplo: [code=cpp]cout << "score: " << score << endl;[/code] . Si no me equivoco si no utilizo en "endl" este funciona igual, en fin si alguien me puede aclarar para que es el uso de lo antes mencionado.

Saludos y espero una respuesta
Gracias
  #2 (permalink)  
Antiguo 25/02/2009, 20:58
Avatar de MeduZaPaT  
Fecha de Ingreso: enero-2009
Ubicación: USA
Mensajes: 106
Antigüedad: 15 años, 3 meses
Puntos: 3
Respuesta: Empezando en c++. Problema con "cin" y duda con "endl"

proba con esto:

Código:
 
// El mundo perdido
// Aventura de Mauri

#include <iostream>
#include <string>
using namespace std;
int main()
{
 string nombre;
 int tropas;
 
        cout << "\tMundo perdido" << endl;
        cout << "Nombre:  ";
        cin >> nombre;
        
        cout  << endl << "Ingrese cantidad de tropas: ";
        cin >> tropas;
        return 0;
}
estas usando una letra para meter un nombre cosa que no es muy util que digamos y que seguramente generara un error, lo que tenes que usar es una cadena o en ingles string.

endl significa end line (que es parecido a "\n") , y es como si apretaras enter (ademas de vaciar el buffer) ya vas a entenderlo mejor mas adelante
  #3 (permalink)  
Antiguo 26/02/2009, 11:29
 
Fecha de Ingreso: octubre-2008
Mensajes: 47
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Empezando en c++. Problema con "cin" y duda con "endl"

Gracias por la respuesta, ya se pudo poniendo string :P
Segui con el code y me quedo asi:

Código:
// El mundo perdido
// Aventura de Mauri

#include <iostream>
using namespace std;
int main()
{
 int muertes, sobrevivientes, tropas;
  string nombre;
 const int resultante = 100;

 
        cout << "\tMundo perdido";
        cout << "\nNombre:  ";
        cin >> nombre;
        
        cout << "\nIngrese cantidad de tropas: ";
        cin >> tropas;
        
        cout << "\nMagos (menor a la cantidad de tropas): ";
        cin >> muertes;
        
        sobrevivientes = tropas - muertes;
        
        // historia
       
        cout << "\nEl gran " << nombre << " marcho en su aventura atravez del mundo perdido de Grhatler,";
        cout << "acompañado por " << tropas << " valientes guerreros que sin dudarlo darian la vida por su lider." << endl;
        cout << "A lo largo de su viaje consiguieron muchas riquezas, pero a la vez tambien sufrieron bajas debido al ataque de espantosos y ferozes enemigos." << endl;
        cout << "Luego de su travezia el gran " << nombre << " regreso con " << sobrevivientes << " sobrevivientes y una fortuna de " << resultante * sobrevivientes << endl;
        cout << "enter";
        cin.ignore(cin.rdbuf()->in_avail() + 1);  
                         return 0;
El problema es que luego de pedir las "muertes", se cierra la consola, ya trate de buscar el error y no lo encuentro, las variables estan bien definidas creo, nose a que se deba :S

Saludos y gracias

EDITO: YA PUDE, TUVE QUE AGREGARLE "cin.ignore();cin.clear();cin.get();"

Última edición por krosty_ufc; 27/02/2009 a las 05:26
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 07:48.