a program in java that asks the user for the number of seats

a program in java that asks the user for the number of seats and then prints out diagrams (one diagram per line) in this format each time a new person occupies a seat. In the above example, you would print a total of 11 diagrams (one per line), the empty diagram and then 10 additional diagrams.

_ _ _ _ _ _ _ _ _ _

_ _ _ _ _ X _ _ _ _

The next person will be in the middle of the empty area at the left (left has more seats).
_ _ X _ _ X _ _ _ _

The next person will be in the section to the right:
_ _ X _ _ X _ _ X _

_ X X _ _ X _ _ X _
_ X X _ X X _ _ X _
_ X X _ X X _ X X _
X X X _ X X _ X X _
X X X X X X _ X X _
X X X X X X X X X _
X X X X X X X X X X

Solution

below is the code. i will add further comments.

/* package codechef; // don\'t place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be \"Main\" only if the class is public. */
class Codechef1
{
   public static void main (String[] args) throws java.lang.Exception
   {
   Scanner sc=new Scanner(System.in);
   System.out.println(\"Enter the number of seats :\");
int n=sc.nextInt();
//String line=\"_ _ _ _ _ _ _ _ _ _\";
StringBuilder line = new StringBuilder(\"_\");
for(int i=0;i<n-1;i++)
{
line.append(\" _\");
}
  
for(int i=1;i<=n;i++)
{
int x=getPosition(0,n-1,i,line.toString());
line.setCharAt((x*2), \'X\');
System.out.println(line);
}
// System.out.println(line);
   }
  
   public static int getPosition(int low,int high,int i,String line)
   {
   if(i==0)
   {
   return -1;
   }
   if(low==high)
   {
   return low;
   }
   int mid=((low+high)/2);
   if((high-low)%2!=0)
   {
       mid=mid+1;
   }
   int x=-1;
   if(line.charAt(mid*2)!=\'X\')
   {
   return mid;
   }
   else
   {
       int leftMid=(low+mid-1)/2;
       if((mid-1-low)%2!=0)
       {
           leftMid++;
       }
       int rightMid=(mid+1+high)/2;
       if((high-(mid+1))%2!=0)
       {
           rightMid++;
       }
  
       if(line.charAt(leftMid*2)!=\'X\' && line.charAt(rightMid*2)!=\'X\')
   {
           if(high-mid<=mid-low)
           {
               x=getPosition(low,mid-1,i--,line);
           }
           else //high-mid>mid-low
           {
               x=getPosition(mid+1,high,i--,line);
           }
      
     
   }
       else if(line.charAt(leftMid*2)!=\'X\')
       {
           x=getPosition(low,mid-1,i--,line);
       }
       else if(line.charAt(rightMid*2)!=\'X\')
       {
           x=getPosition(mid+1,high,i--,line);
       }
       else
       {
           x=getPosition(low,mid-1,i--,line);
       }
   }
  
   return x;
   }
}

a program in java that asks the user for the number of seats and then prints out diagrams (one diagram per line) in this format each time a new person occupies
a program in java that asks the user for the number of seats and then prints out diagrams (one diagram per line) in this format each time a new person occupies

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site