mercredi 20 septembre 2017

How to skip to next case instead of ending change calculation program?

I am constructing a recursion example for calculating change. Although I am compilling correctly, after calculation of how many pound coins (100 pences), the program ends instead of skipping to 50's coins. There seems to be missing something from the if statement that says how many coins used for the first step.

#include <iostream>
#include "change.h"
using namespace std;
//
main()
{
int coin_value;
coin_value = 100; 
int change_needed;
cout << "Please enter change needed in pence : ";
cin >> change_needed;
calculate_change(change_needed,coin_value);
}
void calculate_change ( int change_needed, int coin_value)
{
int coins_used = 0;
int remainder;
int next_coin_value;
while ( change_needed >= coin_value ) {
    change_needed -= coin_value;
    coins_used++;
    remainder = change_needed;
}
if ( coins_used > 0 )
    cout << "Coin value " << coin_value << " number of coins "<< coins_used << "\n";
else {

if (remainder == 0)
    return;
else {
    next_coin_value = next_coin(coin_value);
    calculate_change(remainder,next_coin_value);
}
}
}
int next_coin (int coin_value)
{
int next_coin_value;

switch ( coin_value ) {
    case 100 : next_coin_value = 50;
            break;
    case 50 : next_coin_value = 20;
            break;
    case 20 : next_coin_value = 10;
            break;
    case 10 : next_coin_value = 5;
            break;
    case 5 : next_coin_value = 2;
            break;
    case 2 : next_coin_value = 1;
            break;
    case 1 : next_coin_value = 0;
            break;
    default : cout << "unknown coin value" << coin_value << "\n";

}
}

Aucun commentaire:

Enregistrer un commentaire