15/02/2011, 18:37
|
| | Fecha de Ingreso: junio-2010
Mensajes: 46
Antigüedad: 14 años, 6 meses Puntos: 0 | |
problema con getline hola a toda la comunidad.. tengo el siguiente codigo c++
Código:
# include <iostream>
# include <string>
using namespace std;
void primeraClase(int[]);
void claseEconomica(int[]);
void imprimirpasaje(string,int,int);
int main ()
{
const int tamanio=10;
int cupos[tamanio]={}; //inicializa todo los puestos en 0
int opcion=0;
cout<<"\n\n\t Reservacion \n\n"; //menu
while (opcion!=3)
{
cout<<"\n por favor escriba:\n"<<"1 para primera clase";
cout<<"\n 2 para clase economico";
cout<<"\n 3 pasa salir";
cout<<"\n que opcion elige: ";
cin>>opcion;
switch(opcion)
{
case 1:
primeraClase(cupos);
break;
case 2:
claseEconomica(cupos);
break;
case 3:
cout<<"\n\n\t Gracias por usar nuestro Servicio\n\n";
break;
default:
cout<<"\n Porfavor escriba una entrada valida \n";
opcion=0;
}
}
return 0;
}
void primeraClase(int arreglo[])
{
int a=1; //contador de puestos ocupados
cout<<"hacientos disponibles: "; //muestra los lugares disponibles
for (int i=0;i<5;i++)
{
if (arreglo[i]==0)
{
cout<<i+1<<", ";
}
else
{
a++;
}
}
if (6==a) //si todos los puestos estan ocupados
{
char op;
cout<<"\n no hay cupo, desea viajar en la clase economica (s/n): "; //propone traslado a clase economica
cin>>op;
if (op=='s')
claseEconomica(arreglo);
else
cout<<"\n el proximo vuelo sera dentro de 3 horas \n";
}
else //si hay puestos disponibles
{
int puesto;
cout<<"que puesto desea: ";
cin>>puesto;
while ((arreglo[puesto-1]==1)||(puesto>5)) //compruba que el puesto este disponible y que sea correcto
{
cout<<"\n puesto ocupado o no valido, elija otro: ";
cin>>puesto;
}
arreglo[puesto-1]=1;
string nom;
cout<<"\n escriba su nombre: ";
getline(cin,nom);
imprimirpasaje(nom,puesto,1);
}
}
void claseEconomica(int array[])
{
int a=1; //contador de puestos ocupados
cout<<"hacientos disponibles: "; //muestra los lugares disponibles
for (int i=5;i<10;i++)
{
if (array[i]==0)
{
cout<<i+1<<", ";
}
else
{
a++;
}
}
if (6==a) //si todos los puestos estan ocupados
{
char op;
cout<<"\n no hay cupo, desea viajar en primeraClase (s/n): "; //propone traslado a primera clase
cin>>op;
if (op=='s')
primeraClase(array);
else
cout<<"\n el proximo vuelo sera dentro de 3 horas \n";
}
else //si hay puestos disponibles
{
int puesto;
cout<<"que puesto desea: ";
cin>>puesto;
while ((array[puesto-1]==1)||(puesto<6)) //compruba que el puesto este disponible y sea correcto
{
cout<<"\n puesto ocupado o no valido, elija otro: ";
cin>>puesto;
}
array[puesto-1]=1;
string nombre;
cout<<"\n escriba su nombre: ";
getline(cin,nombre);
imprimirpasaje(nombre,puesto,2);
}
}
void imprimirpasaje(string name,int indice,int seccion)
{
cout<<"\n\n";
cout<<"================================================"<<endl
<<" "<<endl
<<" Pasaje "<<endl
<<" "<<endl
<<"Nombre: "<<name<<" "<<endl;
if (1==seccion)
cout<<"Sección: Primera Clase "<<endl;
else
cout<<"Sección: Segunda Clase "<<endl;
cout<<" "<<endl
<<"Puesto: "<<indice<<" "<<endl
<<" "<<endl
<<"================================================";
}
el programa me compila bien pero en ejecucion no me lee el nombre (string). es muy raro porque si pongo las instrucciones (declaracion del nombre y lectura) al inicio de main el programa lo lee.. que pude ser??
gracias |