0

我是 C++ 新手,想知道我是否走在正确的轨道上?我对此有点困惑,但希望可能对我遗漏/有错的事情提供一些有用的提示……我知道它还没有完全完成,我仍然需要对美元、季度进行细分…… ETC

问题:收银机使用自动投币机帮助找零。我们假设给店员钱来支付购买费用。对于找零,店员将任何纸币归还给顾客,并指示投币机分发少于 1 美元的找零。在本练习中,您将模拟职员和机器的动作。

在收银台,我们需要访问购买价格和付款。变化,即支付价格和购买价格之间的差额,是一个实数。整个部分代表美元的变化,小数部分是美分的变化,以四分之一、一角、镍和便士的形式返回。例如,支付 10 美元来支付 3.08 美元的购买,所需的零钱为 6.92 美元。店员分发 6 美元,投币机为 92 美分分配 3 个 25 美分、1 个硬币、1 个镍和 2 个便士。

92 = 3(25) + 1(10) + 1(5) + 2

使用实数对象标识购买价格(价格)、支付金额(付款)和零钱(change)。主程序计算零钱的数量(coinChange)并将其划分为美元(dollars)、四分之一(quarts)、一角钱(dimes)、镍币(nickels)和便士(pennies)。

您必须为季度 (quarters)、角钱 (dimes)、镍币 (nickels) 和便士 (pennies) 声明常量。您必须在计算中使用复合运算符。您必须使用 setreal(w,p) 和 setw(n) 作为输出。

到目前为止我做了什么:

// Me
// A BRIEF PROGRAM DESCRIPTION FOR CHAPTER 2, HOMEWORK 4

// COMMENT THE PREPROCESSOR 
#include <iostream.h>

// COMMENT THE PREPROCESSOR STATEMENT
#include "textlib.h"

int main( )
{

// COMMENT THE CONSTANTS
const int QUARTER_AMOUNT = 25;
const int DIME_AMOUNT = 10;

// COMMENT THE OBJECTS
double price;
double payment;
double change;

int numofDollars;
int numofQuarters;
int numofDimes;
int numofNickles;
int numofPennies;

int coinChange;


cout << "Enter the purchase total: ";
cin >> price;
cout << "Enter the payment: $";
cin >> payment;


// COMMENT THE CALCULATION
change =  payment - price;
numofDollars = int(change);
coinChange = (int((change / numofDollars) * 100));
numofQuarters = coinChange / 25;
coinChange = coinChange / (numofQuarters * 25);
numofDimes = coinChange / 10;
numofNickles = coinChange / 5;
numofPennies = coinChange / 1;

// OUTPUT THE INFORMATION

return 0;
}
4

1 回答 1

5

是的,你在正确的轨道上。你的总体结构是合理的。这些类型的家庭作业几乎总是有这样的结构:

int main () {
  // read in the data
  ...

  // Do the math
  ...

  // Write out the data
  ...
}

你确实有一些数学错误。试着用铅笔和纸单步执行代码,假装是计算机。此外,尝试使用调试器单步执行代码,检查每一行之后的变量。将实际发生的事情与您的预期进行比较。

于 2013-02-12T19:03:21.440 回答