116 lines
1.7 KiB
C++
116 lines
1.7 KiB
C++
|
Railway seat reservation question which comes in sapient
|
||
|
|
||
|
#include<iostream.h>
|
||
|
#include<conio.h>
|
||
|
#include<stdio.h>
|
||
|
|
||
|
struct rail
|
||
|
{
|
||
|
|
||
|
int seatNo;
|
||
|
int isEmpty;
|
||
|
|
||
|
}seat[67];
|
||
|
|
||
|
void reserve(int n);
|
||
|
int arrRowState[15];
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
for(int i = 0 ; i <67 ; i++)
|
||
|
{
|
||
|
seat[i].seatNo=(i+1);
|
||
|
seat[i].isEmpty=1;
|
||
|
}
|
||
|
for(i=0 ; i<13 ; i++)
|
||
|
arrRowState[i]=5;
|
||
|
|
||
|
arrRowState[13]=2;
|
||
|
arrRowState[14]=67;
|
||
|
|
||
|
char res='y';
|
||
|
do
|
||
|
{
|
||
|
int n;
|
||
|
clrscr();
|
||
|
cout<<"Enter d no of seats u want to reserve : ";
|
||
|
cin>>n;
|
||
|
reserve(n);
|
||
|
cout<<"
|
||
|
|
||
|
|
||
|
Do u want to reserve more seats?";
|
||
|
res=getchar();
|
||
|
}while(res!='n');
|
||
|
}
|
||
|
|
||
|
void reserve(int n)
|
||
|
{
|
||
|
if(n>arrRowState[14])
|
||
|
{
|
||
|
cout<<"Too large group to accomodate";
|
||
|
getch();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
int flag=0;
|
||
|
int seatbook;
|
||
|
for(int i = 0 ; flag==0&&i<=13 ; i++)
|
||
|
{
|
||
|
if(arrRowState[i] >= n)
|
||
|
{
|
||
|
flag=1;
|
||
|
// cout<<"Following Seats Alloted";
|
||
|
seatbook=(((i)*5)+(6-arrRowState[i]));
|
||
|
for(int j = 0 ; j < n ; j++)
|
||
|
{
|
||
|
cout<<"
|
||
|
"<<seatbook+j<<"
|
||
|
";
|
||
|
seat[(seatbook+j)].isEmpty=0;
|
||
|
}
|
||
|
arrRowState[i]=arrRowState[i]-n;
|
||
|
arrRowState[14]=arrRowState[14]-n;
|
||
|
}
|
||
|
}
|
||
|
if(flag==0)
|
||
|
{
|
||
|
while(n!=0)
|
||
|
{
|
||
|
int max,rowNo=0;
|
||
|
max=arrRowState[0];
|
||
|
for( int j = 0 ; j<14 ; j++)
|
||
|
{
|
||
|
if(arrRowState[j] > max)
|
||
|
{
|
||
|
max=arrRowState[j];
|
||
|
rowNo=j;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
if(n>max)
|
||
|
{
|
||
|
n=n-max;
|
||
|
seatbook=(((rowNo)*5)+(6-arrRowState[rowNo]));
|
||
|
arrRowState[rowNo]=arrRowState[rowNo]-max;
|
||
|
for( int j = 0 ; j<max ; j++)
|
||
|
{
|
||
|
cout<<"
|
||
|
"<<(seatbook+j)<<"
|
||
|
";
|
||
|
seat[(seatbook+j)].isEmpty=0;
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
reserve(n);
|
||
|
n=0;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
getch();
|
||
|
}
|