收银机计划 - C.

时间:2014-09-20 14:37:29

标签: c

美好的一天!在我为学校写的课程中,我们必须制作一个收银机类型的程序,看起来很简单,但对于我的生活,我无法让它工作。在购买了产品的数量之后,那么所有的价格,程序必须要求现金支付,然后给予回报。但是变化必须以loonies的数量(或1美元的钞票)给出,然后只剩下剩余的美分。救命?我已经让loonies工作了(有点),但我不知道如何改变。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int itemNum, justChange;
    double prodPrice, tax, cashGiven, change, purchasePrice, changeGiven, changeBack, cashBack;
    float totalPrice;

    //Num of items
    printf ("Number of items: ");
    scanf("%d", &itemNum);

    //Price of items
    printf("Please enter price of items: ");
    scanf("%lf", &prodPrice);

    //Math Stuff
    purchasePrice = itemNum*prodPrice;
    tax = purchasePrice * 0.13;
    totalPrice = purchasePrice*1.13;

    //find change alone
    //justChange = totalPrice


    //Price Output
    printf("Purchase price is: %.2lf \n",purchasePrice );
    printf("TAX (HST 13%):     %.2lf\n",tax );
    printf("Total price is:    %.2lf \n",totalPrice );



    printf("Please Enter Cash: ");
    scanf("%lf", &cashGiven);

    printf("Please Enter Change: ");
    scanf("%lf", &changeGiven);

    //MAth stuuff again

    double endCash;
    double loony;
    int yoloswag;
    endCash = cashGiven - totalPrice;
    loony = endCash/1;
    loony = loony--;

    if (loony<0)
        printf ("Loonies: 0");
    else
    printf("Loonies: %.0lf \n",loony );

    printf("change: %d ", totalPrice-floor(totalPrice) );

    return 0;
}

1 个答案:

答案 0 :(得分:1)

创建一个包含可能更改值的数组;

double cashValues[6] = {1, 0.5, 0.2, 0.1, 0.05, 0.01};

然后创建一个for循环,在其中尝试从差值中减去可能的变化值,直到差值为零。

double difference;
difference = cashGiven - totalPrice;
while (difference != 0) {
    for(int i=0; i<6; i++) {
         if(cashValues[i] <= difference) {
              difference -= cashValues[i];
              printf("%f \n", cashValues[i]);
              i=0;
         }
    }
}