programa de Airline Problema reserva de asiento C ++

En este artículo, vamos a resolver un problema basado en reserva sentada aerolínea con C ++ implantación .

Planteamiento del problema: Escribir un programa para pasajeros asientos de asignar funciones en un avión. Supongamos que un pequeño avión con numeración asiento como sigue:

    1 A B C D
2 A B C D
3 A B C D
4 A B C D
5 A B C D
6 A B C D
7 A B C D

El programa debe mostrar el patrón de asiento, con una ‘X’ marcando los asientos ya asignados. Después de mostrar los asientos disponibles, el programa solicita el asiento deseado, el usuario escribe en un asiento, y luego la pantalla de asientos disponibles se actualiza. Esto continúa hasta que todos los asientos están llenos o hasta que las señales de usuario que el programa debe terminar. Si el usuario escribe en un asiento que ya está asignado, el programa debe decir que el asiento está ocupado y pedir class otra opción.

Ejemplo de entrada:

for ejemplo, después de asientos 1A, 2B y 4C se toman, la pantalla debe verse como:

    1 X B C D
2 A X C D
3 A B C D
4 A B X D
5 A B C D
6 A B C D
7 A B C D

Solución

Todo el problema se puede implementar con la ayuda de 4 funciones principales:

  1. getData ()
  2. display ()
  3. de verificación ()
  4. update ()

divisoria todo el problema se discute en partes centrándose en modularidad funcional.

1. Inicializar una matriz 2-D para representar el asiento matriz

una matriz de caracteres 2-D se utiliza para representar la matriz de asiento donde la primera columna tiene el número de fila de cada asiento y el resto de la columnas tienen asiento cuatro A, B, C, D, respectivamente. Por lo tanto es un 2-D matriz 7X5 para representar la matriz de asientos de aviones que se parece siguiente:

C++ program of Airline Seat Reservation Problem - 4

2. Tomar usuario del asiento For entrada no se solicita

usuario a de entrada no el asiento deseado, dando correspondiente no de asiento. Como un asiento válido no es 1A, 3C, 7D y así sucesivamente, mientras que, una solicitud de asiento no válido puede ser 6F, 0B así sucesivamente.

La entrada es tomada por nuestra función getData () que toma la entrada del usuario y devuelve la cadena.

3. Comprobar el asiento ninguna petición (de verificación ())

Nuestra función principal class este problema es comprobar la validez de la matriz de estado de solicitud de asiento y asiento de actualización según la petición.

  • En primer lugar, comprueba si la entrada del usuario está en el intervalo 1A a 7D o no. Si la entrada del usuario está fuera del alcance de una salida pronta “petición no válida” y for for además la petición.
  • Compruebe si la entrada del usuario es ‘N’ o no. Si se trata de ‘N’ entonces el usuario quiere terminar el programa. Terminar.
  • si la solicitud de asiento es válida, pero ya ocupado
    Entonces mensaje de un mensaje que indica “Ya está ocupado”
    Esta comprobación se puede hacer con la fundación de la matriz fila y columna de índice 2-D continue el asiento correspondiente.
    Let, ROW_INDEX = r y índice_columna = c
    Si (seat_matrix [ROW_INDEX] [índice_columna] ==’X’)

    asiento está ocupado.
  • ELSE solicitud de asiento es válida y no ocupada todavía
    Update ()

4. Actualización de la entrada válida

Si la solicitud es para actualizar el asiento válido que el cambio sencillo su valor para ‘X’ . Se puede hacer mediante la búsqueda de fila y columna de índice y la actualización del valor de seat_matrix en ese lugar a ‘X’ .

5. Función especial para comprobar si todos los asientos están ocupados

El programa también tiene que ser terminada cuando están ocupados todos los asientos. Así, cada vez que mantener una cuenta de cheques si toda la entrada de seat_matrix es ‘X’ o no.

C ++ aplicación for aerolínea reserva de asiento Problema

#include <bits/stdc++.h>
using namespace std;
// to check whether all sits are occupied or not
int allOccupied(char arr[7][5]){
int count=0;
for(int i=0;i<7;i++){
for(int j=1;j<5;j++)
if(arr[i][j]=='X')
count++;
}
if(count==28)
return 1;
return 0;
}
//to display the sits
void display(char arr[7][5]){
for(int i=0;i<7;i++){
for(int j=0;j<5;j++){
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
return;
}
//take user data
string getData(){
string p;
cout<<"enter valid seat no to check(like 1B) or N to end: ";
cin>>p;
return p;
}
//update sit status
void update(char arr[7][5],int row,int col){
cout<<"congrats, your seat is valid. Reserved for youn";
cout<<"updated seat status..........n";
arr[row][col]='X';
}
//checking whether user request for
//his sit no can be processed or not
int check(char arr[7][5],string s){
//if user input is not in the range 1A to 7D
if(s[0]>'7' || s[0]<'1' || s[1]>'D' || s[1]<'A'){
cout<<"invalid seat non"; //invalid sit no
return 0;
}
int row=-1,col=-1;
//find the row no of the user sit
for(int i=0;i<7;i++){
if(arr[i][0]==s[0])
row=i;
}
//find the column no of user sit
for(int j=0;j<5;j++){
if(arr[row][j]==s[1])
col=j;
}
//check whether sit is already occupied or not.
if(col==-1){
cout<<"Seat is already occupiedn";
return 0;
}
else{
//if it's a valid sit & not occupied,
//process the requested & update the sit as occupied
update(arr,row,col);
}
return 1;
}
void airline(char arr[7][5]){
// user can stop process by pressing 'N'
cout<<"enter N if you are done!n";
string s;
// continue if not interrepted by user or
//there is valid sit in unoccupied state
while(true){
s=getData(); //get user input
//if user input is to stop the process
if(s[0]=='N')
break; // break
//process the request & check according to
if(check(arr,s))
display(arr);
if(allOccupied(arr)){ //if all sits are occupied
cout<<"sorry, no more seats left!!!!!!!!!!1..."<<endl;
break; //break
}
}
cout<<"Thanks, that's all"<<endl; //end of program
}
int main()
{
//2-D array for storing sit number
char arr[7][5];
for(int i=0;i<7;i++){
//forst column is row number
arr[i][0]=i+1+'0';
for(int j=1;j<5;j++){
//to represent sit number A,B,C,D respectively
arr[i][j]='A'+j-1;
}
}
cout<<"initial seat arrangements........n";
display(arr);
airline(arr); //airline function
return 0;
}

salida

initial seat arrangements........
1 A B C D
2 A B C D
3 A B C D
4 A B C D
5 A B C D
6 A B C D
7 A B C D
enter N if you are done!
enter valid seat no to check(like 1B) or N to end: 2B
congrats, your seat is valid. Reserved for you
updated seat status..........
1 A B C D
2 A X C D
3 A B C D
4 A B C D
5 A B C D
6 A B C D
7 A B C D
enter valid seat no to check(like 1B) or N to end: 3C
congrats, your seat is valid. Reserved for you
updated seat status..........
1 A B C D
2 A X C D
3 A B X D
4 A B C D
5 A B C D
6 A B C D
7 A B C D
enter valid seat no to check(like 1B) or N to end: 2B
Seat is already occupied
enter valid seat no to check(like 1B) or N to end: 7E
invalid seat no
enter valid seat no to check(like 1B) or N to end: 7C
congrats, your seat is valid. Reserved for you
updated seat status..........
1 A B C D
2 A X C D
3 A B X D
4 A B C D
5 A B C D
6 A B C D
7 A B X D
enter valid seat no to check(like 1B) or N to end: N
Thanks, that's all


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *