Sapient C Question

Reservation.

there are 67 seats in train . there are only 5 seats in a row and in last

row there are only 2 seats.

One person can receive only 5 seat at a time.

If person reserving seat , the care is atken that he may get all in row. if

seats are not available in row then the arrangement is so that person group

get nearby seats.



the following class is given

public class seat

{ char name; int seat; boolean isSeatempty }



1.Draw require class digram and object diagram.

2.Write function seatallot(int noofperson)

to allocate seat with seat number printed for the each name.

Showing Answers 1 - 2 of 2 Answers

sandeep

  • Sep 25th, 2007
 

#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();
}

  Was this answer useful?  Yes

Give your answer:

If you think the above answer is not correct, Please select a reason and add your answer below.

 

Related Answered Questions

 

Related Open Questions