Instructions:

Objectives:

1. Make use of if statements to solve a problem.
2. Make use of input and output statements to model a real world application
3. Format output properly
4. Make use of functions to divide up parts of a problem

Instructions:
Your task is to write a program that simulates a parking meter within the parking deck. The program will start by reading in the time a car arrives in the parking deck. Next it will read in the time the car left the parking deck. You should then calculate the time that has passed between issuing the time ticket and the time the car left. Lastly, you will use this information to determine how much the person needs to pay upon leaving the deck. The rates are in the table below. Please read through all of the notes below!
You should write a single function for each of the following things:

• Reading in the arrival times and departure times from a file
• Calculate the passage of time
• Determine how much the driver needs to pay
• Print out the receipt for the driver, including his arrival and departure times, time in the deck, and how much he owes. Be sure to include the exceptions of a Lost Ticket, Lost Ticket, and Error (over 12 hour stay).

Notes:
Time should be handled in the 24 hour format for simplicity. In addition, you should have the user input the hours, then input the minutes as two separate variables. Please have the user enter hours ranging from 0 to 23, and minutes ranging from 0 to 59.
You may assume that the parking deck is open 24/7 for simplicity. You do not need to worry about times the deck closes for this project.
If the driver has a special parking pass, the program will read in the time of 99 for the hour and 99 for the minutes when entering the deck. This should be used as a code for the system to know that this person has a special parking pass.
If the drive has lost their ticket, the program will enter the input of 55 for the hour and 55 for the minutes when exiting the deck. This will prompt the system to handle the payments without a ticketing stub.
Please make sure that the output is attractive and informative. It should include, but is not limited to: the time the ticket was issued the time the ticket was entered back into the machine (time the driver exited the deck.) You should also include the amount of time that transpired while the driver was in the deck and the amount of money the driver has to pay. Please use proper formatting techniques for output (fixed and set precision, remember we are talking about money.) Use the output format given below in Running.
Rate Table:
 Time in Parking Deck Rate in Dollars (\$) Less than or equal to 30 minutes 3.00 30 Minutes <= 1 Hour 5.00 1 Hour <= 2 Hours ) 10.00 2 Hours <= 3 Hours ) 15.00 3 Hours <= 4 Hours ) 30.00 Each half hour over four hours and <= 12 hrs 30.00 + 5.00 per additional half hour or part thereof 12 Hours < 24 Hours ) Error prints out, see notes above. Lost ticket 110.00 Special Parking Pass 5.00

Running:
Please run the following sets of data, using this format for the output:
 Entrance Hour Entrance Minute Exit Hour Exit Minute Total Minutes or Hours and Minutes Price for Parking Run 1 00 00 00 30 Run 2 05 45 07 00 Run 3 06 32 09 54 Run 4 09 15 12 15 Run 5 09 32 14 35 Run 6 08 00 10 30 Run 7 08 45 55 55 LOST TKT Run 8 99 99 99 99 SPECIAL Run 9 9 10 23 30 ERROR Run 10 Extra Credit 17 0 4 0

This is my code but for some reason I keep getting "[Error] ld returned 1 exit status" and I'm not sure why.

Code:
```#include <iostream>
#include <iomanip>
#include <string>
#include <cmath>

using namespace std;

void arr_dep_times (int &arrivalhr, int &arrivalmin, int &departurehr, int &departuremin)
{
cout << "Enter hour of arrival: (HH - 0-23) ";
cin >> arrivalhr;
cout << "Enter minute of arrival: (MM - 0-59) ";
cin >> arrivalmin;
cout << endl;
cout << "Enter the hour of departure: HH (0-23) ";
cin >> departurehr;
cout << "Enter the minute of deprature: (MM - 0-59) ";
cin >> departuremin;
cout << endl;
}

void calc_total_time (int arrivalhr, int arrivalmin, int departurehr, int departuremin, double &total_time)
{
int arrival_time, departure_time;

arrival_time = (arrivalhr * 60) + arrivalmin;
departure_time = (departurehr * 60) + departuremin;

total_time = departure_time - arrival_time;

cout << "Total time in deck: " << total_time << endl;
}

double calc_total_price (double total_time, double &price)
{
if (total_time <= 30)
{
price = 3.00;
}

else if (total_time > 30 && total_time <= 60)
{
price = 5.00;
}

else if (total_time > 60 && total_time <= 120)
{
price = 10.00;
}

else if (total_time > 120 && total_time <= 180)
{
price = 15.00;
}

else if (total_time > 180 && total_time <= 240)
{
price = 30.00;
}

else if (total_time > 240 && total_time <= 720)
{
price = 30.00 + (((total_time - 240) / 30) * 5.00);
}

else if (total_time > 720 && total_time <= 1440)
{
cout << "Error";
}

return price;
}

void print_receipt (double price)
{
cout << "Please pay: " << price;
}

int main()
{
int arrivalhr, arrivalmin, departurehr, departuremin;
int arrival_time, departure_time;
double price;
double total_time = 0;

arr_dep_times (arrivalhr, arrivalmin, departurehr, departuremin);
calc_total_time (arrivalhr, arrivalmin, departurehr, departuremin, total_time);
calc_total_price (total_time, price);
print_receipt (price);

return 0;
}```

2. Maybe some previous version of your program was left open while you were testing. You can't modify the executable while an instance is running, I think. Either do a reboot or go process hunting(try to find the process responsible and kill it).