Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Antonio Villanueva Segura
- * compilacion g++ -std=c++11 -o programa programa.cpp
- * Sistema de reservaciones de una aerolinea
- * reserva de 10 asientos
- * menu de alternativas:
- * Por favor teclee
- * 1 para "fumar"
- * 2 para "no fumar"
- * Si se teclea 1 el programa debera asignar un asiento en fumadores (asientos 1 a 5)
- * Si se teclea 2 se asignara un asiento de no fumar (asientos 6 a 10)
- * El programa debera imprimir un pase de abordar
- * que indique el numero de asiento y la seccion de fumadores o no fumadores
- * Mediante un arreglo de un solo subindice,represente la grafica de asientos del avion
- * Inicialice a 0 los elementos del arreglo,indicando que estan vacios.
- * A medida que se asigne un asiento establezca a 1
- * El programa no asignara ningun asiento ya asignado
- * Si la seccion de fumadores esta llena el programa preguntara si es aceptable en no fumadores y viceversa
- * Si la respuesta es si se realiza la asignacion
- * si no imprimir "El proximo vuelo parte en 3 Horas"
- *
- */
- #include <iostream>
- #include <vector>
- using namespace std;
- /**********************************************************************/
- void verAvion (vector<int> avion){//Visualiza los asientos del avion
- cout <<endl;
- for (auto a:avion){
- cout <<a<<endl;
- }
- }
- /**********************************************************************/
- bool avionCompleto(vector<int>avion){//Mira si el avion esta lleno
- for (auto asiento:avion){
- if (asiento==0){return false;}//Hay plazas
- }
- return true;//Avion completo
- }
- /**********************************************************************/
- int menu(){//Menu , retorna 1 (fumadores)=true o 2 (No fumadores)=false
- int sel(0);
- while (sel!=1 and sel !=2){
- cout <<endl<<"1 fumadores"<<endl<<"2 no fumadores"<<endl;
- cin>>sel;
- }
- return sel==1 ? true : false;
- }
- /**********************************************************************/
- bool reserva (vector<int> &avion,bool fumador){
- //1 a 5 fumadores ,6 a 10 no fumadores
- int offset= fumador ? 0 : 5; //Si no es fumador aplica +5
- for (int asiento=offset;asiento<5+offset;asiento++){
- if (avion[asiento]==0){//Esta libre
- avion[asiento]=1;//Lo ocupamos
- return true;//Ha encontrado un asiento libre
- }
- }
- return false;//No hay libres
- }
- /**********************************************************************/
- /**********************************************************************/
- int main (){
- vector <int> avion (10,0);//Inicializar el avion 10 asientos
- bool fumador;//respuesta la menu true o false , fumador o no fumador
- string respuesta("no");//Cuando pide reservar en otra categoria
- while (!avionCompleto(avion)){//Mientras no este completo realiza el bucle
- verAvion(avion);//Ver asientos
- fumador=menu();//(fumadores)=true ,(No fumadores)=false
- if (!reserva(avion,fumador)){//Intenta reservar si no busca alternativa
- //No ha encontrado asientos libres en esta categoria propone
- cout << "Hay plazas libres en "<< string (fumador ? "No Fumadores" : " Fumadores ")<<" Acepta (si/no) ?";
- cin>>respuesta;
- if (respuesta=="si"){reserva(avion,!fumador);}//Reserva en otra categoria
- else {cout <<"El proximo vuelo parte en 3 Horas"<<endl;}
- respuesta="no";
- }
- }
- cout <<"Embarque completo, listo para despegue "<<endl;
- verAvion(avion);//Ver asientos todos ocupados 1
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement