Hola, soy nuevo en la programación y estoy haciendo un programa sencillo, pero por alguna extraña razón no se ejecuta de buena manera.
El programa pide introducir un nombre y edad y de acuerdo a un rango de edad establecido se imprime un valor ("piso n"); el problema consiste en que cuando hay que introducir el nombre, el programa se ejecuta sin dar chance de introducir la edad y automáticamente adopta un valor desconocido.
lo interesante es que cuando invierto el orden de la ejecución (primero la edad y luego el nombre) funciona bien.
la única idea que se me ocurre, de cual puede ser el problema, es que haya un conflicto en el tipo de las variables y el programa se vuelva loco XD .
Pdt: estoy utilizando codeblocks
Este es el codigo:
#include <iostream>
//PROGRAMA QUE DEVUELVE UN VALOR "PISO" SEGUN LA EDAD INGRESADA
using namespace std;
main()
{
char name;
int edad;
cout<<"Introduzca su nombre :";cin>>name;
cout<<"\nDigite su edad :";cin>>edad;
cout<<"\n";
if(edad>=0 && edad<=9)cout<<"PISO 0";
else if(edad>=10 && edad<=19)cout<<"PISO 1";
else if(edad>=20 && edad<=29)cout<<"PISO 2";
else if(edad>=30 && edad<=39)cout<<"PISO 3";
else if(edad>=40 && edad<=49)cout<<"PISO 4";
else if(edad>=50 && edad<=59)cout<<"PISO 5";
else if(edad>=60 && edad<=69)cout<<"PISO 6";
else if(edad>=70 && edad<=79)cout<<"PISO 7";
else
cout<<"\nERROR"<<endl;
cout<<endl;
}
Mod: Los códigos deben ir en etiquetas GeSHi
primero que nada main es de tipo int y retorna 0 por regla general... es raro que el compilador te permita compilar eso...
segundo, lo que pasa es que el enter lo está tomando el otro cin... debes usar cin.ignore, lee esto
http://foro.elhacker.net/programacion_cc/funcion_cinignore-t290246.0.html (http://foro.elhacker.net/programacion_cc/funcion_cinignore-t290246.0.html)
Desconozco como funciona C++ pero no tendrias que guardar el nombre en un string? en vez de un caracter?
Tal como te dice hotcake has de usar una variable tipo string para el nombre.
El codigo que te pongo mas abajo funciona compilandolo en notepad++ con MinGW y usando estos paramatros:
Citar//Guardar el archivo actual
NPP_SAVE
//Borrar el exe anterior
cmd /c del /Q "$(CURRENT_DIRECTORY)\$(NAME_PART).exe"
//Compila (aqui debes indicar la ruta en donde se encuentra tú compilador g++)
C:\MinGW\bin\g++.exe "$(FULL_CURRENT_PATH)" -o $(NAME_PART)
//Ejecutamos el programa.
$(CURRENT_DIRECTORY)\$(NAME_PART).exe
char solo guarda un caracter que es un numero de 0 a 255. char se puede usar para guardar cadenas si lo ponemos cono array
char[20]Lo que hacemos es declarar name como string, que es un tipo especial de dato para guardar cadenas de caracteres:
He añadido ademas la impresion de la variable name para probar su funcionamiento.
#include <iostream>
//PROGRAMA QUE DEVUELVE UN VALOR "PISO" SEGUN LA EDAD INGRESADA
using namespace std;
main()
{
string name;
int edad;
cout<<"Introduzca su nombre :";
cin>>name;
cout<<"Digite su edad :";
cin>>edad;
cout<<"\n"<<name<<" VA AL ";
if(edad>=0 && edad<=9)cout<<"PISO 0";
else if(edad>=10 && edad<=19)cout<<"PISO 1";
else if(edad>=20 && edad<=29)cout<<"PISO 2";
else if(edad>=30 && edad<=39)cout<<"PISO 3";
else if(edad>=40 && edad<=49)cout<<"PISO 4";
else if(edad>=50 && edad<=59)cout<<"PISO 5";
else if(edad>=60 && edad<=69)cout<<"PISO 6";
else if(edad>=70 && edad<=79)cout<<"PISO 7";
else
cout<<"\nERROR"<<endl;
cout<<endl;
}
El uso de cin.ignore lo desconozco ya que he solido usar simpre printf y scanf
Declarar main como int y devolver un valor con return, parece que depende del compilador.
Y tambien te informo ya de paso de que no estas usando ningun bucle en ese codigo.