BTC USD 86,658.1 Gold USD 4,345.18
Time now: Jun 1, 12:00 AM

programming c

vquad

Banned
Messages
2,644
Joined
Jan 25, 2010
Messages
2,644
Reaction score
39
Points
30
salam otai2 sume..saya nak mitak pencerahan soalan nie.. xnampk langsung cmne nak buat...


Our coins come in denominations of 1 cent, 5 cents, 10 cents, 20 cents, 50 cents and 1 dollar. Assuming that there are unlimited number of coins, devise a coin-change algorithm to compute the minimum number of coins required to make up a particular amount? For example, for 46 cents you need 4 coins: two 20-cent coins, one 5-cent coin, and one 1-cent coin.


Present your algorithm using pseudocode and flowchart.
 
em.. utk minimize kan syiling utk pulangkan baki duit tu..

bahagi dengan amount tu dengan 1dollar, kemudian , 50sen, pastu 20sen... 10sen , 5sen and seterusnye 1sen

guna mathematic je utk kira mcmane nk bg system ni keluarkan brape byk 1dollar.. brape byk 50sen tu.. n so on...
 
ni pakai bahagi, amik nombor bulat kat depan, pastu pakai function modulus utk tengok brape balance... bermula dengan bahagi coin terbesar, check sekiranya modulus > 0 then terus dengan coin yg lebih kecik...
 
Senang je ni..
ni teori yg plg mudah:

1.00
0.50
0.10
0.05
0.01

yg ni sebagai base ko ikut susunan nilai yg besar kepada yg terkecil.

Katakan dia enter 87cent.

1st: 87cent ditolak dgn base terbesar 1.00. Bila ditolak dpt -ve kan? so skip kpd base kedua terbesar 0.50..ngam bila ditolak masih ada balance 37cent.Bila ada balance dia loop blk utk tolak dgn base terbesar semula.

2nd: katakan 37cent. tolak dgn 1.00 ada balance -ve. tolak dgn 0.50 pon ada -ve.Bila tolak pulak dgn base 0.10 dpt balance +ve. Selepas tu loop semula utk tolak dr base besar blk.Sampailah nilai enter 87cent tu jd 0cent.

3rd: setiap yg ditolak ada balance tu perlu direkodkan jumlah kuantiti - set pada variable je semasa looping...
Contoh 0.50cent (kuantiti 1), 0.10 (kuantiti 3), 0.05cent (kuantiti 1), 0.01 (kuantiti 2).

Good luck!
 
sebab saya free petang ini ini codenya dalam c
Code:
#include <stdio.h>
void makechange(int, int*);

int main(void)
{
    int i = 0;
    int money = 0;
    int change[6] = {0};
    int noofcoin = 0;
    char *moneytype[6] = {"Satu Ringgit","50 sen", "20 sen", "10 sen", "5 sen", "1 sen"};
  
    printf("Please enter the amount of money (in cents): ");  
    scanf("%d", &money);
     
    
    makechange(money, change);
    for (i=0; i < 6; i++) 
    {
        if (change[i] > 0)
        {
            noofcoin = noofcoin + change[i];
            printf("%d %s\n", change[i], moneytype[i]);
        }
    }
    printf("No of coins %d\n", noofcoin);
    return 0;
}

void makechange(int moneytotal, int* result)
{
    int i = 0;
    int moneyvalues[6] = {100, 50, 20, 10, 5, 1};
 
    for (i = 0; i < 6; i++) 
    {
        result[i] = moneytotal / moneyvalues[i];
        moneytotal = moneytotal % moneyvalues[i];
    }
}
 
sebab saya free petang ini ini codenya dalam c
Code:
#include <stdio.h>
void makechange(int, int*);

int main(void)
{
    int i = 0;
    int money = 0;
    int change[6] = {0};
    int noofcoin = 0;
    char *moneytype[6] = {"Satu Ringgit","50 sen", "20 sen", "10 sen", "5 sen", "1 sen"};
  
    printf("Please enter the amount of money (in cents): ");  
    scanf("%d", &money);
     
    
    makechange(money, change);
    for (i=0; i < 6; i++) 
    {
        if (change[i] > 0)
        {
            noofcoin = noofcoin + change[i];
            printf("%d %s\n", change[i], moneytype[i]);
        }
    }
    printf("No of coins %d\n", noofcoin);
    return 0;
}

void makechange(int moneytotal, int* result)
{
    int i = 0;
    int moneyvalues[6] = {100, 50, 20, 10, 5, 1};
 
    for (i = 0; i < 6; i++) 
    {
        result[i] = moneytotal / moneyvalues[i];
        moneytotal = moneytotal % moneyvalues[i];
    }
}


ini yg paling terbaek ~
 
Back
Top
Log in Register