Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace helpin_mpgh_noob
- {
- class Program
- {
- //
- // Next time learn to do your homework yourself.
- //
- const double UNIT_COST_FIRST_200 = 21.8;
- const double UNIT_COST_ABOVE_200 = 25.8;
- static void Main(string[] args)
- {
- //Ignore this, just a basic exception handler.
- AppDomain.CurrentDomain.UnhandledException += delegate(object sender, UnhandledExceptionEventArgs e)
- {
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine(e.ExceptionObject.ToString());
- Console.ResetColor();
- Console.WriteLine("Press any key to exit");
- Console.ReadKey();
- return;
- };
- int accountId;
- double currentMeterReading;
- double previousMeterReading;
- Receipt receipt;
- int processCount = 0;
- while ((processCount == 0 || Console.ReadLine() == "y"))
- {
- Console.WriteLine("Enter account id");
- while (!int.TryParse(Console.ReadLine(), out accountId))
- Console.WriteLine("Enter account id again, failed to cast input to integer.");
- Console.WriteLine("Enter current meter reading");
- while (!double.TryParse(Console.ReadLine(), out currentMeterReading))
- Console.WriteLine("Enter meter reading again, failed to cast input to double.");
- Console.WriteLine("Enter previous meter reading");
- while (!double.TryParse(Console.ReadLine(), out previousMeterReading))
- Console.WriteLine("Enter previous meter reading again, failed to cast input to double.");
- receipt = Process(accountId, currentMeterReading, previousMeterReading);
- //Print results
- Console.WriteLine("===================<Receipt for {0}>===================", receipt.accountId.ToString());
- Console.WriteLine("Account ID: {0}", receipt.accountId.ToString());
- Console.WriteLine("Current meter reading: {0}", receipt.currentMeterReading.ToString());
- Console.WriteLine("Previous meter reading: {0}", receipt.previousMeterReading.ToString());
- Console.WriteLine("Amount consumed: {0}", receipt.ammountUsed.ToString());
- Console.WriteLine("Amount to be paid: {0}", receipt.overallPrice.ToString());
- Console.Write("\n\n\n");
- Console.WriteLine("Do you want to process another? type \"y\" to enter another");
- processCount++;
- }
- }
- private struct Receipt
- {
- public int accountId;
- public double currentMeterReading;
- public double previousMeterReading;
- public double ammountUsed;
- public double overallPrice;
- }
- private static Receipt Process(int accountId, double currentMeterReading, double previousMeterReading)
- {
- Receipt receipt = default(Receipt);
- receipt.currentMeterReading = currentMeterReading;
- receipt.previousMeterReading = previousMeterReading;
- receipt.accountId = accountId;
- receipt.ammountUsed = receipt.currentMeterReading - receipt.previousMeterReading;
- double leftOver = receipt.ammountUsed - 200;
- if (leftOver > 0)
- receipt.overallPrice = ConvertSenToRinggit(200 * UNIT_COST_FIRST_200) + ConvertSenToRinggit(leftOver * UNIT_COST_ABOVE_200);
- else
- receipt.overallPrice = ConvertSenToRinggit(receipt.ammountUsed * UNIT_COST_FIRST_200);
- return receipt;
- }
- private static double ConvertSenToRinggit(double sen)
- {
- return sen / 100;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement