elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con Array
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con Array  (Leído 8,531 veces)
Ja_90

Desconectado Desconectado

Mensajes: 51



Ver Perfil
Problema con Array
« en: 9 Febrero 2015, 18:30 pm »

Buenas Companieros tengo el siguiente problema del libro Deitel:

(Sistema de reservaciones para una aerolínea.) Una pequeña aerolínea acaba de comprar una computadora para su
nuevo sistema automático de reservaciones. A usted se le ha pedido que programe el nuevo sistema. Usted debe es-
cribir un programa que asigne los asientos, en cada vuelo, del único avión de la aerolínea (capacidad: 10 asientos).
Su programa debe desplegar el siguiente menú de alternativas:
Por favor, digite 1 para “primera clase”
Por favor, digite 2 para “económico”
Si la persona digita 1, su programa debe asignar un asiento en la sección de primera clase (asientos 1 a 5). Si la
persona digita 2, su programa debe asignar un asiento en la sección económica (asientos 6 a 10). Su programa de-
be imprimir un pase de abordar que indique el número de asiento de la persona y si está en la sección de primera
clase o en la sección económica del avión.
Utilice un arreglo con un solo subíndice para representar la tabla de asientos del avión. Inicialice en 0 todos los ele-
mentos del arreglo para indicar que todos los asientos están vacíos. Mientras se asigna cada asiento, el valor de los
elementos correspondientes del arreglo se establece en 1, para indicar que el asiento ya no está disponible.
Por supuesto, su programa nunca debe asignar un asiento que ya está asignado. Cuando la sección de primera clase
está llena, su programa debe preguntar a la persona si acepta que se le coloque en la sección económica (y viceversa).
Si acepta, entonces haga la asignación apropiada del asiento. Si no acepta, entonces despliegue el mensaje “El
siguiente vuelo parte en tres horas”.

Código
  1. #include <iostream>
  2.  
  3. using std::cout;
  4. using std::cin;
  5. using std::endl;
  6.  
  7. void Mostrar(int Sillas[]);
  8.  
  9. int main()
  10. {
  11.    cout << "\t RESERVACIONES AEROLINEA \n\n";
  12.  
  13.    int Asientos[10] = {};
  14.    int k=0; // contador de los 10 turnos
  15.  
  16.    cout << " Por favor, digite 1 para 'primera clase'\n";
  17.    cout << " Por favor, digite 2 para 'economico'\n\n";
  18.  
  19.    cout << " Asientos: ";
  20.    Mostrar(Asientos);
  21.  
  22.    do{
  23.        int puesto, x;
  24.        cout << "\n\nDigite su asiento: ";
  25.        cin >>  puesto;
  26.  
  27.        if(puesto == 1)
  28.        {
  29.            for(int i=0 ; i<5 ; i++)
  30.            {
  31.                if(Asientos[i] == 0 && i<5)
  32.                {
  33.                    Asientos[i] = 1;
  34.                    x = i+1;
  35.                    break;
  36.                }
  37.            }
  38.            cout << "\nPASE DE ABORDAJE:" << endl;
  39.            cout << "El asiento asignado es: " << x << endl;
  40.            cout << "Se encuentra en 1ra clase" << endl << endl;
  41.        }
  42.  
  43.        if(puesto == 2)
  44.        {
  45.            for(int i=5 ; i<10 ; i++)
  46.            {
  47.                if(Asientos[i] == 0 && i<10)
  48.                {
  49.                    Asientos[i] = 1;
  50.                    x = i+1;
  51.                    break;
  52.                }
  53.            }
  54.            cout << "\nPASE DE ABORDAJE:" << endl;
  55.            cout << "El asiento asignado es: " << x << endl;
  56.            cout << "Se encuentra en clase economico" << endl << endl;
  57.        }
  58.  
  59.        Mostrar(Asientos);
  60.  
  61.        k++;
  62.    }while(k<10);
  63.  
  64.    return 0;
  65. }
  66.  
  67. void Mostrar(int Sillas[])
  68. {
  69.    for(int i=0 ; i<10 ; i++)
  70.    {
  71.        cout << " " << Sillas[i];
  72.    }
  73. }
  74.  
  75.  

Ahora bn hasta aca el programa pide 10 veces la entrada o la asignacion de los puestos pero no logro ver como hacer para que cuando ya no hallan puestos disponibles el programa pregunte si desea un puesto en la otra clase y si la respuesta es SI que lo asigne... Si alguien me puede guiar se lo agradeceria.


En línea

:D  ::::Ja_90::::   :D
Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: Problema con Array
« Respuesta #1 en: 9 Febrero 2015, 20:43 pm »

Se me ocurren varios mecanismos.

Uno de ellos sería que comprobaras en cada entrada que:

1: El asiento no está ocupado
2: Que hay asientos libres

Si contiene un 0 está libre, en otro caso, no lo está. El comprobar si esta o no libre lo puedes hacer o bien con un bucle que recorra desde el primer al último asiento y devuelva "true" si hay libres (si alguno es 0) y false si no, y así lo miras.

Otra sería un contador que incrementaras en cada reserva en cada clase, cuando ese contador llegue al tope no quedan reservas.


En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: Problema con Array
« Respuesta #2 en: 10 Febrero 2015, 03:03 am »

Te dejo mi verision del programa en las pruebas que le hize funciona bien, te muestra los lugares vacios por clase y si escoges alguna no ya reservado te muestra que esta lleno

checalo espero te ayude saludos....


Código
  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4.  
  5. void Disponibles(int *asientos,int clase){
  6.  
  7.    int i=0,f=0,asiento;
  8.    bool vacantes=false;;
  9.    if(clase==1){
  10.       i=0;
  11.       f=4;
  12.    }
  13.    else if(clase==2){
  14.        i=5;
  15.        f=9;
  16.    }
  17.    cout<<"\nAsientos disponibles en la clase "<<clase<<": ";
  18.    for(;i<=f;i++){
  19.        if(asientos[i]==0){
  20.            cout<<i+1<<" ";
  21.            vacantes=true;
  22.        }
  23.    }
  24.    if(vacantes==false){cout<<"No hay vancantes en la clase #"<<clase<<endl; cin.get();cin.get();return;}
  25.  
  26.    cout<<"\nEscoga un asiento "<<endl;
  27.    cout<<"===> ";
  28.    cin>>asiento;
  29.  
  30.    if((clase==1) && (asiento>5) || (asiento<1)){cout<<"Escogio uno no valido "<<endl; cin.get(); cin.get(); return;}
  31.    if((clase==2) && (asiento<6) || (asiento>10)){cout<<"Escogio uno no valido "<<endl; cin.get(); cin.get(); return;}
  32.  
  33.    if(asientos[asiento-1]==1 ){
  34.        cout<<"Escogio uno no valido "<<endl;
  35.        cin.get();
  36.        cin.get();
  37.    }
  38.    else{
  39.       asientos[asiento-1]=1;
  40.       cout<<"Asiento #"<<asiento<<" reservado"<<endl;
  41.       cin.get();
  42.       cin.get();
  43.  
  44.    }
  45. }
  46.  
  47.  
  48. int main(){
  49.  
  50.    int avion[]={0,0,0,0,0,0,0,0,0,0};
  51.    int clase;
  52.    int asiento;
  53.  
  54.    while(true){
  55.  
  56.       cout<<"                    Sistema de reserva de Vuelos"<<endl;
  57.       cout<<"Digite 1 para primera clase"<<endl;
  58.       cout<<"Digite 2 para segunda clase"<<endl;
  59.       cout<<"Digite 3 para salir "<<endl;
  60.       cout<<"===> ";
  61.       cin>>clase;
  62.  
  63.       if(clase==1){Disponibles((int*)avion,1);}
  64.       else if(clase==2){Disponibles((int*)avion,2);}
  65.       else if(clase==3){break;}
  66.  
  67.       system("cls");
  68.    }
  69.  
  70.    cout<<"Programa finalizado"<<endl;
  71.  
  72. cin.get();
  73. cin.get();
  74. return 0;}
  75.  
En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
Ja_90

Desconectado Desconectado

Mensajes: 51



Ver Perfil
Re: Problema con Array
« Respuesta #3 en: 15 Febrero 2015, 22:02 pm »

Muchas gracias por sus respuestas....
crack81 gracias por esa muestra pero lo que verdaderamente necesito es
hasta ahi el programa pide 10 veces la entrada o la asignacion de los puestos pero no logro ver como hacer para que cuando ya no hallan puestos disponibles el programa pregunte si desea un puesto en la otra clase y si la respuesta es SI que lo asigne... Si alguien me puede guiar se lo agradeceria.
En línea

:D  ::::Ja_90::::   :D
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Problema con Array
« Respuesta #4 en: 16 Febrero 2015, 12:25 pm »

no logro ver como hacer para que cuando ya no hallan puestos disponibles el programa pregunte si desea un puesto en la otra clase y si la respuesta es SI que lo asigne

Código
  1. if(vacantes==false){cout<<"No hay vancantes en la clase #"<<clase<<endl; cin.get();cin.get();return;}

Ese if se ejecuta cuando no hay asientos en la clase seleccionada... solo tienes que poner ahí la lógica para que pregunte por un puesto en la nueva clase.

Un saludo.
En línea

Ja_90

Desconectado Desconectado

Mensajes: 51



Ver Perfil
Re: Problema con Array
« Respuesta #5 en: 20 Octubre 2015, 19:29 pm »

Este problema lo habia planteado hace algun tiempo, espero  no ser inoportuno, pero asi fue como lo resolvi, creo que funciona bastante bien...

Código
  1. #include <iostream>
  2. using std::cout;
  3. using std::cin;
  4. using std::endl;
  5.  
  6. #include <cstdlib>   // system("clear")
  7.  
  8. #define TAMANIO 10
  9.  
  10. void MostrarSillas(int Silla[]);
  11.  
  12. int main() {
  13.  
  14.    int Sillas[TAMANIO] = {};
  15.    int clase, asiento;
  16.    int turnos = 0;
  17.    char respuesta;
  18.  
  19.    while(true){
  20.        cout << " \t     SISTEMA RESERVACIONES PARA AEROLINEA LA XXX  \n\n";
  21.        cout << " Estos son los asientos del avion: \n\n";
  22.        MostrarSillas(Sillas);
  23.        cout << "\n ------------------------------------------------ \n";
  24.        cout << " Por favor, digite 1 para “primera clase”.\n";
  25.        cout << " Por favor, digite 2 para “económico”.\n\n";
  26.        cout << " Su respuesta es: ";
  27.        cin >> clase;
  28.  
  29.        if(clase == 1) {
  30.            cout << "\n Elija un asiento del 0 al 4, gracias: ";
  31.            cin >> asiento;
  32.  
  33.            if(Sillas[asiento] == 1){
  34.                cout << " Desea un Asiento en 'economico' (s/n): ";
  35.                cin >> respuesta;
  36.  
  37.                if(respuesta == 's'){
  38.                    cout << " \n Elija un asiento del 6 al 9, gracias: ";
  39.                    cin >> asiento;
  40.  
  41.                    if(Sillas[asiento] == 1){
  42.                        cout << " \n Lo sentimos, no hay asientos disponibles...." << endl;
  43.                        cout << " El proximo vuelo sale en 3 horas..." << endl;
  44.                        break;
  45.                    }
  46.                    else {
  47.                        Sillas[asiento] = 1;
  48.                        system("clear");
  49.                    }
  50.                }
  51.            }
  52.            else {
  53.                Sillas[asiento] = 1;
  54.                system("clear");
  55.            }
  56.        }
  57.  
  58.        if(clase == 2){
  59.            cout << " \n Elija un asiento del 5 al 9, gracias: ";
  60.            cin >> asiento;
  61.  
  62.            if(Sillas[asiento] == 1){
  63.                cout << " Desea un Asiento en 'primera clase' (s/n): ";
  64.                cin >> respuesta;
  65.  
  66.                if(respuesta == 's'){
  67.                    cout << " \n Elija un asiento del 0 al 4, gracias: ";
  68.                    cin >> asiento;
  69.  
  70.                    if(Sillas[asiento] == 1){
  71.                        cout << " \n Lo sentimos, no hay asientos disponibles...." << endl;
  72.                        cout << " El proximo vuelo sale en 3 horas..." << endl;
  73.                        break;
  74.                    }
  75.                    else {
  76.                        Sillas[asiento] = 1;
  77.                        system("clear");
  78.                    }
  79.                }
  80.            }
  81.            else {
  82.                Sillas[asiento] = 1;
  83.                system("clear");
  84.            }
  85.        }
  86.    }
  87.    return 0;
  88. }
  89.  
  90. void MostrarSillas(int Silla[]) {
  91.  
  92.    for(int i=0 ; i<TAMANIO ; i++) {
  93.        cout << " " <<  Silla[i];
  94.    }
  95.    cout << endl << endl;
  96. }
  97.  
En línea

:D  ::::Ja_90::::   :D
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema con array
Programación Visual Basic
Free-Knowledgend 4 2,129 Último mensaje 3 Julio 2006, 23:33 pm
por <--v1c1ous-->
Problema con Array
PHP
Riki_89D 5 2,919 Último mensaje 12 Marzo 2009, 15:39 pm
por Riki_89D
Eliminar las posiciones pares de un array y comprimir el array
Java
sevedeboa 8 15,398 Último mensaje 26 Enero 2015, 15:52 pm
por sevedeboa
Problema redimensionando array
Programación C/C++
snake_linux 5 1,908 Último mensaje 25 Agosto 2015, 23:09 pm
por kondrag_X1
Problema con Array
Java
Fryuio 0 1,669 Último mensaje 5 Enero 2017, 17:53 pm
por Fryuio
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines