Write a C program that has the following specifications In t

Write a C++ program that has the following specifications:

In the menu,
1. Set up the parking lot (This allows you to enter how many levels, rows, columns, and how many spots are in one row, how many rows for small cars, trucks, and motorcycles )
2. Edit ( This allows you to change the number of levels, rows, columns, and the number of spots in each row, and the number of spots for cars, trucks and motor cycles)
3. Look for capacity (This allows you to display how many open spots are available in the parking lot)
4. View level information (be able to display the information for each level such as open spots for cars, trucks, motorcycles)
5. Exit (to exit the program)
Final Project: Write a C++ program to manage a parking lot. Build Specifications 1. The parking lot has multiple levels. Each level has multiple rows of spots. 2. The parking lot can park motorcycles, cars, and buses 3. The parking lot has motorcycle spots, compact spots, and large spots. 4. A motorcycle can park in any spot. 5. A car can park in either a single compact spot or a single large spot. 6. A bus can park in five large spots that are consecutive and within the same row. It cannot park in small spots.

Solution

/* Vehicle parking program */

#include <stdio.h>
#include <conio.h>
#include <windows.h>

#define CAR 1
#define SCOOTER 2

/* to store vehicle number, and its
row-col position in an array */
struct vehicle
{
int num ;
int row ;
int col ;
int type ;
} ;

int parkinfo[4][10] ; /* a 2-D array to store number of vehicle parked */
int vehcount ; /* to store total count of vehicles */
int carcount ; /* stores total count of cars */
int scootercount ; /* stores total count of scooters */

void display( ) ;
void changecol ( struct vehicle * ) ;
struct vehicle * add ( int, int, int, int ) ;
void del ( struct vehicle * ) ;
void getfreerowcol ( int, int * ) ;
void getrcbyinfo ( int, int, int * ) ;
void show( ) ;

/* decrements the col. number by one
this fun. is called when the data is
shifted one place to left */
void changecol ( struct vehicle *v )
{
v -> col = v -> col - 1 ;
}

/* adds a data of vehicle */
struct vehicle * add ( int t, int num, int row, int col )
{
struct vehicle *v ;

v = ( struct vehicle * ) malloc ( sizeof ( struct vehicle ) ) ;

v -> type = t ;
v -> row = row ;
v -> col = col ;

  if ( t == CAR )
carcount++ ;
else
   scootercount++ ;

vehcount++ ;
  parkinfo[row][col] = num ;

return v ;
}

/* deletes the data of the specified
car from the array, if found */
void del ( struct vehicle *v )
{
int c ;

for ( c = v -> col ; c < 9 ; c++ )
  parkinfo[v -> row][c] = parkinfo[v -> row][c+1] ;

parkinfo[v -> row][c] = 0 ;

if ( v -> type == CAR )
carcount-- ;
else
scootercount-- ;

vehcount-- ;
}

/* get the row-col position for the vehicle to be parked */
void getfreerowcol ( int type, int *arr )
{
int r, c, fromrow = 0, torow = 2 ;

if ( type == SCOOTER )
{
fromrow += 2 ;
torow += 2 ;
}

for ( r = fromrow ; r < torow ; r++ )
{
for ( c = 0 ; c < 10 ; c++ )
{
if ( parkinfo[r][c] == 0 )
{
arr[0] = r ;
arr[1] = c ;
return ;
}
}
}

if ( r == 2 || r == 4 )
{
arr[0] = -1 ;
arr[1] = -1 ;
}
}

/* get the row-col position for the vehicle with specified number */
void getrcbyinfo ( int type, int num, int *arr )
{
int r, c, fromrow = 0, torow = 2 ;

if ( type == SCOOTER )
{
fromrow += 2 ;
torow += 2 ;
}

for ( r = fromrow ; r < torow ; r++ )
{
for ( c = 0 ; c < 10 ; c++ )
{
if ( parkinfo[r][c] == num )
{
arr[0] = r ;
arr[1] = c ;
return ;
}
}
}

if ( r == 2 || r == 4 )
{
arr[0] = -1 ;
arr[1] = -1 ;
}
}

/* displays list of vehicles parked */
void display( )
{
int r, c ;

printf ( \"Cars ->\ \" ) ;

for ( r = 0 ; r < 4 ; r++ )
{
if ( r == 2 )
  printf ( \"Scooters ->\ \" ) ;

for ( c = 0 ; c < 10 ; c++ )
printf ( \"%d\\t\", parkinfo[r][c] ) ;
printf ( \"\ \" ) ;
}
}

int main( )
{
int choice, type, number, row = 0, col = 0 ;
int i, tarr[2] ;
int finish = 1 ;

/* creates a 2-D array of car and scooter class */
struct vehicle *car[2][10] ;
struct vehicle *scooter[2][10] ;

system ( \"cls\" ) ;

/* displays menu and calls corresponding functions */
while ( finish )
{
system ( \"cls\" ) ;
printf ( \"\ Car Parking\ \" ) ;
printf ( \"1. setup the parking lot\ \" ) ;
printf ( \"2. Total no. of vehicles parked\ \" ) ;
printf ( \"3. Total no. of cars parked\ \" ) ;
printf ( \"4. Total no. of scooters parked\ \" ) ;
printf ( \"5. Display order in which vehicles are parked\ \" ) ;
printf ( \"6. Departure of vehicle\ \" ) ;
printf ( \"7. Exit\ \" ) ;

scanf ( \"%d\", &choice ) ;

switch ( choice )
{
case 1 :
system ( \"cls\" ) ;
  printf ( \"\ Add: \ \" ) ;

type = 0 ;

/* check for vehicle type */
while ( type != CAR && type != SCOOTER )
{
  printf ( \"Enter vehicle type (1 for Car / 2 for Scooter ): \ \" ) ;
scanf ( \"%d\", &type ) ;
   if ( type != CAR && type != SCOOTER )
  printf ( \"\ Invalid vehicle type.\ \" ) ;
}

  printf ( \"Enter vehicle number: \" ) ;
  scanf ( \"%d\", &number ) ;

  /* add cars\' data */
  if ( type == CAR || type == SCOOTER )
  {
  getfreerowcol ( type, tarr ) ;

  if ( tarr[0] != -1 && tarr[1] != -1 )
  {
  row = tarr[0] ;
  col = tarr[1] ;

if ( type == CAR )
car[row][col] = add ( type, number, row, col ) ;
else
  scooter[row - 2][col] = add ( type, number, row, col ) ; ;
}
  else
{
if ( type == CAR )
printf ( \"\ No parking slot free to park a car\ \" ) ;
else
printf ( \"\ No parking slot free to park a scooter\ \" ) ;
}
}
  else
  {
printf ( \"Invalid type\ \" ) ;
  break ;
}

printf ( \"\ Press any key to continue...\" ) ;
getch( ) ;
  break ;

case 2 :
system ( \"cls\" ) ;
  printf ( \"Total vehicles parked: %d\ \", vehcount ) ;
printf ( \"\ Press any key to continue...\" ) ;
getch( ) ;
  break ;

case 3 :
system ( \"cls\" ) ;
  printf ( \"Total cars parked: %d\ \", carcount ) ;
printf ( \"\ Press any key to continue...\" ) ;
getch( ) ;
  break ;

case 4 :
system ( \"cls\" ) ;
  printf ( \"Total scooters parked: %d\ \", scootercount ) ;
printf ( \"\ Press any key to continue...\" ) ;
getch( ) ;
  break ;

case 5 :
system ( \"cls\" ) ;
  printf ( \"Display\ \" ) ;
  display( ) ;
printf ( \"\ Press any key to continue...\" ) ;
getch( ) ;
  break ;

case 6 :
system ( \"cls\" ) ;
  printf ( \"Departure\ \" ) ;
type = 0 ;
/* check for vehicle type */
while ( type != CAR && type != SCOOTER )
{
  printf ( \"Enter vehicle type (1 for Car / 2 for Scooter ): \ \" ) ;
scanf ( \"%d\", &type ) ;
   if ( type != CAR && type != SCOOTER )
  printf ( \"\ Invalid vehicle type.\ \" ) ;
}
  printf ( \"Enter number: \" ) ;
  scanf ( \"%d\", &number ) ;

   if ( type == CAR || type == SCOOTER )
   {
   getrcbyinfo ( type, number, tarr ) ;
   if ( tarr[0] != -1 && tarr[1] != -1 )
   {
col = tarr [1] ;
/* if the vehicle is car */
if ( type == CAR )
{
row = tarr [0] ;
   del ( car [row][col] ) ;
  for ( i = col ; i < 9 ; i++ )
  {
  car[row][i] = car[row][i + 1] ;
  changecol ( car[row][i] ) ;
  }
free ( car[row][i] ) ;
  car[row][i] = NULL ;
}
  /* if a vehicle is scooter */
  else
{
row = tarr[0] - 2 ;
  if ( ! ( row < 0 ) )
  {
  del ( scooter[row][col] ) ;
  for ( i = col ; i < 9 ; i++ )
  {
  scooter[row][i] = scooter[row][i + 1] ;
  changecol ( scooter[row][col] ) ;
  }
  scooter[row][i] = NULL ;
}
}
}
  else
{
if ( type == CAR )
  printf ( \"\ Invalid car number, or a car with such number has not been parked here.\ \" ) ;
else
printf ( \"\ Invalid scooter number, or a scooter with such number has not been parked here.\ \" ) ;
}
}
printf ( \"\ Press any key to continue...\" ) ;
getch( ) ;
  break ;

case 7 :
system ( \"cls\" ) ;
for ( row = 0 ; row < 2 ; row++ )
{
for ( col = 0 ; col < 10 ; col++ )
{
if ( car[row][col] -> num != 0 )
free ( car[row][col] ) ;
if ( scooter[row][col] -> num != 0 )
  free ( scooter[row+2][col] ) ;
}
}
  finish = 0 ;
  break ;
}
}
return 0 ;

Write a C++ program that has the following specifications: In the menu, 1. Set up the parking lot (This allows you to enter how many levels, rows, columns, and
Write a C++ program that has the following specifications: In the menu, 1. Set up the parking lot (This allows you to enter how many levels, rows, columns, and
Write a C++ program that has the following specifications: In the menu, 1. Set up the parking lot (This allows you to enter how many levels, rows, columns, and
Write a C++ program that has the following specifications: In the menu, 1. Set up the parking lot (This allows you to enter how many levels, rows, columns, and
Write a C++ program that has the following specifications: In the menu, 1. Set up the parking lot (This allows you to enter how many levels, rows, columns, and
Write a C++ program that has the following specifications: In the menu, 1. Set up the parking lot (This allows you to enter how many levels, rows, columns, and

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site