£2, £1, 50p, 20p, 10p, 5p, 2p, 1p coins.
I tried to use an array but that doesn't seem to be working as the output is wayyyy messed up. Anyone got any ideas? It's C#.
using System;
namespace Calculator
{
class Program
{
public static void Main(string[] args)
{
//Declare Variables.
string value, myChoice;
int pence;
int[] change = new int [8] {200, 100, 50, 20, 10, 5, 2, 1};
do
{
//Collect input from user.
Console.WriteLine("Please input the amount in pence that you want to have calculated:\n");
value = Console.ReadLine();
pence = Convert.ToInt32(value);
Console.Clear();
Console.WriteLine("You entered {0}", pence);
//The math.
do
{
if(pence >= 200)
{
change[0] = pence / 200;
pence = pence % 200;
}
else if(pence >= 100)
{
change[1] = pence / 100;
pence = pence % 100;
}
else if(pence >= 50)
{
change[2] = pence / 50;
pence = pence % 50;
}
else if(pence >= 20)
{
change[3] = pence / 20;
pence = pence % 20;
}
else if(pence >= 10)
{
change[4] = pence / 10;
pence = pence % 10;
}
else if(pence >= 5)
{
change[5] = pence / 5;
pence = pence % 5;
}
else if(pence >= 2)
{
change[6] = pence / 2;
pence = pence % 2;
}
else if(pence >= 1)
{
change[7] = pence / 1;
pence = pence % 1;
}
} while (pence > 0);
Console.WriteLine("The minimum amount of change possible for that sum of money");
Console.WriteLine("would be the following combination of coins: \n");
//Output end values only if greater than 0.
if(change[0] > 0)
{
Console.WriteLine("{0} x £2 coins.", change[0]);
}
if(change[1] > 0)
{
Console.WriteLine("{0} x £1 coins.", change[1]);
}
if(change[2] > 0)
{
Console.WriteLine("{0} x 50p coins.", change[2]);
}
if(change[3] > 0)
{
Console.WriteLine("{0} x 20p coins.", change[3]);
}
if(change[4] > 0)
{
Console.WriteLine("{0} x 10p coins.", change[4]);
}
if(change[5] > 0)
{
Console.WriteLine("{0} x 5p coins.", change[5]);
}
if(change[6] > 0)
{
Console.WriteLine("{0} x 2p coins.", change[6]);
}
if(change[7] >0)
{
Console.WriteLine("{0} x 1p coins.", change[7]);
}
Console.ReadLine();
Console.Clear();
Console.WriteLine("Would you like to quit?\n(Y/N)\n");
myChoice = Console.ReadLine();
//Does user want to quit?
switch(myChoice)
{
case "Y":
case "y":
Console.WriteLine("\nProgram will close.");
Console.ReadLine();
break;
case "N":
case "n":
Console.WriteLine("\nProgram will restart.");
Console.ReadLine();
Console.Clear();
break;
}
} while (myChoice != "Y" && myChoice != "y");
}
}
}
EDIT:
If it helps, here is the working program, before I tried to implement the array.
using System;
namespace Calculator
{
class Program
{
public static void Main(string[] args)
{
//Declare Variables.
string value, myChoice;
int change, pound2 = 0, pound1 = 0, p50 = 0, p20 = 0, p10 = 0, p5 = 0, p2 = 0, p1 = 0;
do
{
//Collect input from user.
Console.WriteLine("Please input the amount in pence that you want to have calculated:\n");
value = Console.ReadLine();
change = Convert.ToInt32(value);
Console.Clear();
Console.WriteLine("You entered {0}", change);
//The math.
do
{
if(change >= 200)
{
pound2 = change / 200;
change = change % 200;
}
else if(change >= 100)
{
pound1 = change / 100;
change = change % 100;
}
else if(change >= 50)
{
p50 = change / 50;
change = change % 50;
}
else if(change >= 20)
{
p20 = change / 20;
change = change % 20;
}
else if(change >= 10)
{
p10 = change / 10;
change = change % 10;
}
else if(change >= 5)
{
p5 = change / 5;
change = change % 5;
}
else if(change >= 2)
{
p2 = change / 2;
change = change % 2;
}
else if(change >= 1)
{
p1 = change / 1;
change = change % 1;
}
} while (change > 0);
Console.WriteLine("The minimum amount of change possible for that sum of money");
Console.WriteLine("would be the following combination of coins: \n");
//Output end values only if greater than 0.
if(pound2 > 0)
{
Console.WriteLine("{0} x £2 coins.", pound2);
}
if(pound1 > 0)
{
Console.WriteLine("{0} x £1 coins.", pound1);
}
if(p50 > 0)
{
Console.WriteLine("{0} x 50p coins.", p50);
}
if(p20 > 0)
{
Console.WriteLine("{0} x 20p coins.", p20);
}
if(p10 > 0)
{
Console.WriteLine("{0} x 10p coins.", p10);
}
if(p5 > 0)
{
Console.WriteLine("{0} x 5p coins.", p5);
}
if(p2 > 0)
{
Console.WriteLine("{0} x 2p coins.", p2);
}
if(p1 >0)
{
Console.WriteLine("{0} x 1p coins.", p1);
}
Console.ReadLine();
Console.Clear();
Console.WriteLine("Would you like to quit?\n(Y/N)\n");
myChoice = Console.ReadLine();
//Does user want to quit?
switch(myChoice)
{
case "Y":
case "y":
Console.WriteLine("\nProgram will close.");
Console.ReadLine();
break;
case "N":
case "n":
Console.WriteLine("\nProgram will restart.");
Console.ReadLine();
Console.Clear();
break;
}
} while (myChoice != "Y" && myChoice != "y");
}
}
}
Edited by W!, 01 March 2010 - 18:18.