Files
basic-computer-games/22_Change/csharp/Program.cs
Piotr Czajkowski d530794947 Added PrintChange
2022-01-02 14:08:49 +01:00

115 lines
3.5 KiB
C#

using System;
namespace Change
{
class Program
{
static void Header()
{
Console.WriteLine("Change".PadLeft(33));
Console.WriteLine("Creative Computing Morristown, New Jersey".PadLeft(15));
Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("I, your friendly microcomputer, will determine\n"
+ "the correct change for items costing up to $100.");
Console.WriteLine();
Console.WriteLine();
}
static (bool status, double price, double payment) GetInput()
{
Console.WriteLine("Cost of item? ");
var priceString = Console.ReadLine();
if (!double.TryParse(priceString, out double price))
{
Console.WriteLine($"{priceString} isn't a number!");
return (false, 0, 0);
}
Console.WriteLine("Amount of payment? ");
var paymentString = Console.ReadLine();
if (!double.TryParse(paymentString, out double payment))
{
Console.WriteLine($"{paymentString} isn't a number!");
return (false, 0, 0);
}
return (true, price, payment);
}
static void PrintChange(double change)
{
var tens = (int)(change / 10);
if (tens > 0)
Console.WriteLine($"{tens} ten dollar bill(s)");
var temp = change - (tens * 10);
var fives = (int)(temp / 5);
if (fives > 0)
Console.WriteLine($"{fives} five dollar bill(s)");
temp -= fives * 5;
var ones = (int)temp;
if (ones > 0)
Console.WriteLine($"{ones} one dollar bill(s)");
temp -= ones;
var cents = temp * 100;
var half = (int)(cents / 50);
if (half > 0)
Console.WriteLine($"{half} one half dollar(s)");
temp = cents - (half * 50);
var quarters = (int)(temp / 25);
if (quarters > 0)
Console.WriteLine($"{quarters} quarter(s)");
temp -= quarters * 25;
var dimes = (int)(temp / 10);
if (dimes > 0)
Console.WriteLine($"{dimes} dime(s)");
temp -= dimes * 10;
var nickels = (int)(temp / 5);
if (nickels > 0)
Console.WriteLine($"{nickels} nickel(s)");
temp -= nickels * 5;
var pennys = (int)(temp + 0.5);
if (pennys > 0)
Console.WriteLine($"{pennys} penny(s)");
}
static void Main(string[] args)
{
Header();
while (true)
{
(bool result, double price, double payment) = GetInput();
if (!result)
continue;
var change = payment - price;
if (change == 0)
{
Console.WriteLine("Correct amount, thank you!");
continue;
}
if (change < 0)
{
Console.WriteLine($"Sorry, you have short-changed me ${price - payment}!");
continue;
}
Console.WriteLine($"Your change ${change:N2}");
PrintChange(change);
Console.WriteLine("Thank you, come again!");
Console.WriteLine();
}
}
}
}