Header Ads

CPP Program For Railway Reservation

CPP Program For Railway Reservation
#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 : "<<endl;
                        cin>>n;
                        reserve(n);
                        cout<<"\nDo u want to reserve more seats?(press y to continue)"<<endl;
                        res=getchar();
            }while(res!='n');
}
void reserve(int n)
{
            if(n>arrRowState[14])
            {
                        cout<<"Too large group to accomodate"<<endl;
                        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();
}
Sample Output :
Enter d no of seats u want to reserve :
5
1.      2  3  4  5
Do u want to reserve more seats?(press y to continue)
Y

Enter d no of seats u want to reserve :
7
1.      7  8  9  10  11  12
Do u want to reserve more seats?(press y to continue)
Y
Enter d no of seats u want to reserve :
9
1.      17  18  19  20  21  22  23  24
Do u want to reserve more seats?(press y to continue)
N


Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Powered by Blogger.