Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace ParkingTicket
- {
- class Program
- {
- static void Main()
- {
- int speed;
- int yrInSchool;
- double fine;
- char choice = ' ';
- do
- {
- Console.Clear();
- speed = GetSpeed();
- if (speed <= 15)
- Console.WriteLine("No speeding fine to pay.");
- else
- {
- yrInSchool = GetYrInSchool();
- fine = CalculateFine(speed, yrInSchool);
- DisplayFine(fine);
- }
- choice = GetUserChoice();
- } while (choice != 'Q' && choice != 'q');
- }
- static int GetSpeed()
- {
- int speed;
- string userInput;
- try
- {
- Console.Write("Please enter the speed you were traveling: ");
- userInput = Console.ReadLine();
- speed = Convert.ToInt32(userInput);
- }
- catch
- {
- Console.WriteLine("an INVALID - PLEASE TRY AGAIN");
- Console.Write("Please press enter to continue....");
- userInput = Console.ReadLine();
- speed = GetSpeed(); // this is the recursion - calling myself
- }
- return speed;
- // code this method
- }
- static int GetYrInSchool()
- {
- string userEntry;
- int year;
- /*************************************************************
- * modify this method to validate the year using a Try/Catch
- *************************************************************/
- Console.WriteLine("nClassifications");
- Console.WriteLine("tFreshman (enter 1)");
- Console.WriteLine("tSophomore (enter 2)");
- Console.WriteLine("tJunior (enter 3)");
- Console.WriteLine("tSenior (enter 4)");
- try
- {
- Console.Write("Enter choice: ");
- userEntry = Console.ReadLine();
- year = Convert.ToInt32(userEntry);
- }
- catch
- {
- Console.WriteLine("an INVALID - PLEASE TRY AGAIN");
- Console.Write("Please press enter to continue....");
- userEntry = Console.ReadLine();
- year = GetYrInSchool(); // this is the recursion - calling myself
- }
- return year;
- }
- static double CalculateFine(int speed, int year)
- {
- const double COST_PER_5_OVER = 87.50;
- const int SPEED_LIMIT = 15;
- const double INITIAL_FEE = 75.00;
- double fine = 0;
- if (((year == 1) && (speed >= 15) || (speed <= 19)))
- {
- fine = INITIAL_FEE - 50.00;
- }
- else if (((year == 1) && (speed >= 20) || (speed >= 24)))
- {
- fine += (INITIAL_FEE - 50.00) + COST_PER_5_OVER;
- }
- else if (((year == 1) && (speed >= 25) || (speed <= 29)))
- {
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 2);
- }
- else if (((year == 1) && (speed >= 30) || (speed <= 34)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 3);
- else if (((year == 1) && (speed >= 35) || (speed <= 39)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 4);
- else if (((year == 1) && (speed >= 40) || (speed <= 44)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 5);
- else if (((year == 1) && (speed >= 45) || (speed <= 49)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 6);
- if (((year == 1) && (speed >= 50) || (speed <= 54)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 7);
- if (((year == 1) && (speed >= 55) || (speed <= 59)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 8);
- if (((year == 1) && (speed >= 60) || (speed <= 64)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 9);
- if (((year == 1) && (speed >= 65) || (speed <= 69)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 10);
- if (((year == 1) && (speed >= 70) || (speed <= 74)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 11);
- if (((year == 1) && (speed >= 75) || (speed <= 79)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 12);
- if (((year == 1) && (speed >= 80) || (speed <= 84)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 13);
- if (((year == 1) && (speed >= 85) || (speed <= 89)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 14);
- if (((year == 1) && (speed >= 90) || (speed <= 94)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 15);
- if (((year == 1) && (speed >= 95) || (speed <= 99)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 16);
- if (((year == 1) && (speed >= 100) || (speed <= 104)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 17);
- if (((year == 1) && (speed >= 105) || (speed <= 109)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 18);
- if (((year == 1) && (speed >= 110) || (speed <= 114)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 19);
- if (((year == 1) && (speed >= 115) || (speed <= 119)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 20);
- if (((year == 1) && (speed >= 120) || (speed <= 124)))
- fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 21);
- else if (((year == 2) && (speed >= 16) || (speed <= 19)))
- fine = INITIAL_FEE;
- if (((year == 2) && (speed >= 20) || (speed <= 24)))
- fine = INITIAL_FEE + (COST_PER_5_OVER);
- if (((year == 2) && (speed >= 25) || (speed <= 29)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 2);
- if (((year == 2) && (speed >= 30) || (speed <= 34)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 3);
- if (((year == 2) && (speed >= 35) || (speed <= 39)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 3);
- if (((year == 2) && (speed >= 40) || (speed <= 44)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 4);
- if (((year == 2) && (speed >= 45) || (speed <= 49)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 5);
- if (((year == 2) && (speed >= 50) || (speed <= 54)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 6);
- if (((year == 2) && (speed >= 55) || (speed <= 59)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 7);
- if (((year == 2) && (speed >= 60) || (speed <= 64)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 8);
- if (((year == 2) && (speed >= 65) || (speed <= 69)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 9);
- if (((year == 2) && (speed >= 70) || (speed <= 74)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 10);
- if (((year == 2) && (speed >= 75) || (speed <= 79)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 11);
- if (((year == 2) && (speed >= 80) || (speed <= 84)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 12);
- if (((year == 2) && (speed >= 85) || (speed <= 89)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 13);
- if (((year == 2) && (speed >= 90) || (speed <= 94)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 14);
- if (((year == 2) && (speed >= 95) || (speed <= 99)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 15);
- if (((year == 2) && (speed >= 100) || (speed <= 104)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 16);
- if (((year == 2) && (speed >= 105) || (speed <= 109)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 17);
- if (((year == 2) && (speed >= 110) || (speed <= 114)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 18);
- if (((year == 2) && (speed >= 115) || (speed <= 119)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 19);
- if (((year == 2) && (speed >= 120) || (speed <= 124)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 20);
- if (((year == 2) && (speed >= 125) || (speed <= 129)))
- fine = INITIAL_FEE + (COST_PER_5_OVER * 21);
- else if (((year == 3) && (speed >= 16) || (speed <= 19)))
- fine = INITIAL_FEE + 50.00;
- if (((year == 3) && (speed >= 20) || (speed <= 24)))
- fine = INITIAL_FEE + 50.00 + (COST_PER_5_OVER);
- if (((year == 3) && (speed >= 25) || (speed <= 29)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 2);
- if (((year == 3) && (speed >= 30) || (speed <= 34)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 3);
- if (((year == 3) && (speed >= 35) || (speed <= 39)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 4);
- if (((year == 3) && (speed >= 40) || (speed <= 44)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 5);
- if (((year == 3) && (speed >= 45) || (speed <= 49)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 6);
- if (((year == 3) && (speed >= 50) || (speed <= 54)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 7);
- if (((year == 3) && (speed >= 55) || (speed <= 59)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 8);
- if (((year == 3) && (speed >= 60) || (speed <= 64)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 9);
- if (((year == 3) && (speed >= 65) || (speed <= 69)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 10);
- if (((year == 3) && (speed >= 70) || (speed <= 74)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 11);
- if (((year == 3) && (speed >= 75) || (speed <= 79)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 12);
- if (((year == 3) && (speed >= 80) || (speed <= 84)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 13);
- if (((year == 3) && (speed >= 85) || (speed <= 89)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 14);
- if (((year == 3) && (speed >= 90) || (speed <= 94)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 15);
- if (((year == 3) && (speed >= 95) || (speed <= 99)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 16);
- if (((year == 3) && (speed >= 100) || (speed <= 104)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 17);
- if (((year == 3) && (speed >= 105) || (speed <= 109)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 18);
- if (((year == 3) && (speed >= 110) || (speed <= 114)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 19);
- if (((year == 3) && (speed >= 115) || (speed <= 119)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 20);
- if (((year == 3) && (speed >= 120) || (speed <= 124)))
- fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 21);
- else if (((year == 4) && (speed >= 16) || (speed <= 19)))
- fine = INITIAL_FEE + 100.00;
- if (((year == 4) && (speed >= 20) || (speed <= 24)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER);
- if (((year == 4) && (speed >= 25) || (speed <= 29)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 2);
- if (((year == 4) && (speed >= 30) || (speed <= 34)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 3);
- if (((year == 4) && (speed >= 35) || (speed <= 39)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 4);
- if (((year == 4) && (speed >= 40) || (speed <= 44)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 5);
- if (((year == 4) && (speed >= 45) || (speed <= 49)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 6);
- if (((year == 4) && (speed >= 100) || (speed <= 54)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 7);
- if (((year == 4) && (speed >= 55) || (speed <= 59)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 8);
- if (((year == 4) && (speed >= 60) || (speed <= 64)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 9);
- if (((year == 4) && (speed >= 65) || (speed <= 69)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 10);
- if (((year == 4) && (speed >= 70) || (speed <= 74)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 11);
- if (((year == 4) && (speed >= 75) || (speed <= 79)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 12);
- if (((year == 4) && (speed >= 80) || (speed <= 84)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 13);
- if (((year == 4) && (speed >= 85) || (speed <= 89)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 14);
- if (((year == 4) && (speed >= 90) || (speed <= 94)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 15);
- if (((year == 4) && (speed >= 95) || (speed <= 99)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 16);
- if (((year == 4) && (speed >= 100) || (speed <= 104)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER);
- if (((year == 4) && (speed >= 105) || (speed <= 109)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 18);
- if (((year == 4) && (speed >= 110) || (speed <= 114)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 19);
- if (((year == 4) && (speed >= 115) || (speed <= 119)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 20);
- if (((year == 4) && (speed >= 120) || (speed <= 124)))
- fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 21);
- // finish coding this method
- return fine;
- }
- static void DisplayFine(double fine)
- {
- Console.WriteLine("Fine: {0:C}", fine);
- }
- static char GetUserChoice()
- {
- Console.Write
- ("nPress "C" to [C]ontinue or "Q" to [Q]uit: ");
- string userEntry = Console.ReadLine();
- char choice = Convert.ToChar(userEntry);
- Console.WriteLine("------------------------------------");
- return choice;
- }
- }
- }
- static double CalculateFine(int speed, int year)
- {
- const double COST_PER_5_OVER = 87.5;
- const int SPEED_LIMIT = 15;
- const double INITIAL_FEE = 75;
- // The discount is 50 for each year, scaled so that year 1 is
- // -50, year 2 is 0, and so on.
- double discount = year * 50 - 100;
- // This calculation assumes that speed >= SPEED_LIMIT
- int feeMultiplier = (speed - SPEED_LIMIT) / 5;
- double fine = feeMultiplier * COST_PER_5_OVER + INITIAL_FEE;
- return discount + fine;
- }
- static double CalculateFine(int speed, int year)
- {
- const double COST_PER_5_OVER = 87.50;
- const int SPEED_LIMIT = 15;
- const double INITIAL_FEE = 75.00;
- double fine = 0;
- if(speed <= SPEED_LIMIT)
- {
- return 0; // No fine imposed
- }
- fine = INITIAL_FEE;
- // Adjust for the different years
- switch(year) {
- case 1:
- fine -= 50;
- break;
- case 2:
- // nowt
- break;
- case 3:
- fine += 50;
- break;
- case 4:
- fine += 100;
- }
- // Add the remaining fine for each 5 miles over the limit
- // XXX: This is slightly different from yours, in that past 125,
- // it'll still keep adding COST_PER_5_OVER
- int perFiveOver = (int)Math.Floor((speed - SPEED_LIMIT) / 5);
- fine += (perFiveOver * COST_PER_5_OVER);
- return fine;
- }
- ((year == 1) && (speed >= 50) && (speed <= 54))
- const double COST_PER_5_OVER = 87.50;
- const int SPEED_LIMIT = 15;
- const double INITIAL_FEE = 75.00;
- if (speed <= SPEED_LIMIT)
- {
- return 0;
- }
- double yearSurcharge;
- switch (year)
- {
- case 1:
- yearSurcharge = -50;
- break;
- case 2:
- yearSurcharge = 0;
- break;
- case 3:
- yearSurcharge = 50;
- break;
- case 4:
- yearSurcharge = 100;
- break;
- default:
- yearSurcharge = 0;
- break;
- }
- const int NUMBER_OF_FIVE_OVER = 21;
- int numberOfFiveOver = Math.Min((speed - SPEED_LIMIT) % 5; MAX_NUMBER_OF_FIVE_OVER)
- return INITIAL_FEE + yearSurcharge + (numberOfFiveOver * COST_PER_5_OVER);
- if (speed > SPEED_LIMIT) {
- return INITIAL_FEE
- + (year == 1 ? -50 : year == 3 ? 50 : year == 4 ? 100 : 0)
- + Math.Min((speed - SPEED_LIMIT) % 5, MAX_NUMBER_OF_FIVE_OVER) * COST_PER_5_OVER;
- } else {
- return 0;
- }
- if(year==1) return calculateFineForYear1(speed);
- if(year==2) return ...
- if(speed<50) return 0;
- if(speed<55) return ...;
- if(speed<60) return ...;
- if(speed<65) return ...
- Int total_above_limit = (speed – SPEED_LIMIT);
- Int increments_of_5_above_limit = (total_above_limit)/5
- Return ( (INITIAL_FEE – 50) + COST_PER_5_OVER*increments_of_5_above_limit))
Add Comment
Please, Sign In to add comment