Hey,

My homework assignment for my C++ class was to write a program that can find the minimum amount of coins necessary for change for a purchase.

Here's the code I came up with:

Code:`#include <iostream>`

#include <string>

using namespace std;

void calculate ( double change, int * coins );

void getValues ( double &change );

int main ( int argc, char * argv[] )

{

string coinTypes[6] = { "Dollars", "Half-Dollars", "Quarters", "Dimes", "Nickels", "Pennies" };

int coinValues[6] = { 0, 0, 0, 0, 0, 0 };

double change = 0.0;

getValues ( change );

calculate ( change, coinValues );

for ( int i = 0; i < 6; i++ )

{

cout << coinTypes[i] << " = " << coinValues[i] << endl;

}

system("pause");

return 0;

}

//

//Function to get the values from the user

//

void getValues ( double &change )

{

double total, paid;

cout << "Enter total cost: ";

cin >> total;

cout << "Enter amount paid: ";

cin >> paid;

change = static_cast<double>(paid - total);

}

//

//function to calculate how many coins are needed

//

void calculate ( double change, int * coins )

{

double div[] = { 1, .5, .25, .1, .05, .01 };

double result;

//Figire out the number of coins needed;

for ( int i = 0; i < 6; i++ )

{

result = static_cast<double>( change / div[i] ); //see how many of the coin value go into the change amount

change -= static_cast<double>( (int)result * div[i] ); //subtract the value of the coin * the amount of it from the change

coins[i] = static_cast<int>( result ); //take the number of coins and store in the necessary variable

}

}

Here's the program's output

Everything is good except there should be 2 pennies, not 1...Code:`Enter total cost: 56.78`

Enter amount paid: 100

Dollars = 43

Half-Dollars = 0

Quarters = 0

Dimes = 2

Nickels = 0

Pennies = 1

Press any key to continue . . .

I think there's some sort of precision error or something in the numbers.

Any help would be greatly appreciated.

Thanks,

Matt N