2

假设给定了三个变量,收入、费用和利润,它们都是 Money 类型(具有两个 int 字段,美元和美分的结构化类型)。分配利润从收入中减去费用的结果。让我们愉快地假设收入超过支出。但是,您仍然可能会发现费用的美分部分超过了收入的美分部分。如果是这种情况,您将不得不从收入美元中“借”1(即减去 1)并将其“给”到收入的美分(即加 100!),以便正确执行减法。

这是我所拥有的,但它不起作用:

if (revenue.cents < expenses.cents)
   {
    revenue.dollars = revenue.dollars -1;
    revenue.cents = revenue.cents + 100;
    profit = revenue - expenses;
   }
else 
   {
    profit = revenue - expenses;
   }

我收到此错误消息:错误:“收入 - 费用”中的“运营商-”不匹配

任何帮助表示赞赏。谢谢。

4

2 回答 2

3

你得到这个错误是因为你不能从另一个结构中减去一个结构。您必须operator-()为您的struct.

于 2012-11-18T19:14:20.853 回答
0

您需要调用结构的每个元素并分别减去它们。MyProgLab 不允许您为此练习定义函数。不仅如此,如果您输入上面的代码,它会告诉您“您不应该修改元素”。为了避免这种情况,您必须在算术中进行借入美元。像这样:

if(expenses.cents > revenue.cents) 
{
profit.dollars = (revenue.dollars - 1) - expenses.dollars;
profit.cents = (revenue.cents + 100) - expenses.cents;
}//end if
于 2013-10-09T13:24:49.583 回答