using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TariffCategory
{
class Program
{
static double getTariff(double usage)
{
const double MIN_MONTHLY_CHARGE = 3.00;
double tariff = 0.0;
var cases = new Dictionary<Func<double, bool>, Action>
{
{x => x < 1, () => tariff = MIN_MONTHLY_CHARGE},
{x => (x >= 1 && x <=200), () => tariff = (usage * 0.218)},
{x => (x >= 201 && x <= 300), () => tariff = (usage * 0.334)},
{x => (x >= 301 && x <= 400), () => tariff = (usage * 0.4)},
{x => (x >= 401 && x <= 500), () => tariff = (usage * 0.402)},
{x => (x >= 501 && x <= 600), () => tariff = (usage * 0.416)},
{x => (x >= 601 && x <= 700), () => tariff = (usage * 0.426)},
{x => (x >= 701 && x <= 800), () => tariff = (usage * 0.437)},
{x => (x >= 801 && x <= 900), () => tariff = (usage * 0.453)},
{x => x >= 901, () => tariff = (usage * 0.454)}
};
cases.First(kvp => kvp.Key(usage)).Value();
return tariff;
}
static void Main(string[] args)
{
int count = 0;
double totalResidentBill = 0.0, totalResidentialUsage = 0.0;
double kwh = 0.0;
List<Double> outputArray = new List<Double>();
Console.Write("Enter the number of houses in residential area: ");
int numOfhouses = Convert.ToInt32(Console.ReadLine());
Double[] inputArray = new Double[numOfhouses];
Console.WriteLine();
Console.WriteLine("Enter the Electricity usage of each house in KWH: ");
Console.WriteLine();
while (numOfhouses > 0)
{
Console.Write("House #" + (count + 1) + ": ");
String readInput = Console.ReadLine();
Double.TryParse(readInput, out kwh);
if (numOfhouses <= 0)
{
break;
}
else
{
inputArray[count] = kwh;
numOfhouses--;
count++;
continue;
}
}
foreach (double value in inputArray)
{
double houseTariff = getTariff(value);
outputArray.Add(houseTariff);
}
Console.WriteLine();
Console.WriteLine("***********Computing House Bills**************");
Console.WriteLine();
for (int i = 0; i < outputArray.Count; i++)
{
totalResidentBill += outputArray[i];
totalResidentialUsage += inputArray[i];
Console.WriteLine("HOUSE #" + (i + 1));
Console.WriteLine("Usage: " + inputArray[i] + "KW/H");
Console.WriteLine("Bill: RM" + outputArray[i].ToString("#0.00"));
Console.WriteLine();
}
string check4plural = "";
if (inputArray.Length > 1)
check4plural = "Houses";
else
check4plural = "House";
Console.WriteLine("*************Total Residence Bill*****************");
Console.WriteLine();
Console.WriteLine("TOTAL NUMBER OF HOUSES: " + inputArray.Length + " " + check4plural);
Console.WriteLine("TOTAL USAGE: " + totalResidentialUsage.ToString() + "KW/H");
Console.WriteLine("TOTAL BILL: RM" + totalResidentBill.ToString("#0.00"));
Console.WriteLine();
Console.ReadKey(true);
}
}
}