1

我正在做一项家庭作业,要求我们创建一种 Units 类,该类可以跟踪单位并对其执行基本算术运算。问题描述有这么一点,我不太明白:

可能最简单的跟踪单位的方法是给 Units 一个将符号映射到整数的字典。如果你除以一个单位,那么它在字典中就有一个负值。您可以通过将字典中每个符号的值相加来将两个单位相加。当它为零时,将符号扔掉!

作为参考,这也包含在描述中:

[...] 你可以写一个表达式 3 只大象 / (1 sec sec),它会返回正确的结果。

有人可以在这里阐明一下吗?如何使用字典来映射这些类型的单位?我是否让这种方式变得比需要的更难?

4

1 回答 1

3

听起来您的老师正在提示您如何在计算结束时以正确的单位结束。

当你解析问题时,当你遇到明显是单位的项目时,将它们输入字典。字典将由一个数字和一个字符串(假定的“单位”)组成。然后,您将使用一组规则来增加或减少整数计数。结果整数值将帮助您正确输出单位。

计数为 1 表示它是输出中的一个单位。-1 的计数表示它的倒数是输出中的一个单位。计数为 0 表示它根本不出现在输出中。同样,计数为 2 表示它的正方形在输出中显示为一个单位。

以机智:

5 Hippo + 10 Hippo = 15 Hippos

Parsing:       Dictionary:
--------       -----------
5 Hippo        Hippo:1
+
10 Hippo       Hippo:1  (previous operation was addition or subtraction, and already have Hippo in dictionary

但是考虑这个问题:

5 Hippo * 5 sec/Hippo = 25 sec

Parsing:       Dictionary:
5 Hippo        Hippo:1
*
5 sec          Hippo:1, sec:1
/
Hippo          Hippp:0, sec:1  (previous operation was division of Hippo, so decrement Hippo count)

也许:

10 feet / 5 sec = 2 feet/sec

Parsing:       Dictionary:
10 feet        feet:1
/
5 sec          feet:1, sec:-1  (divided by sec, and second is not in dictionary, so second implicitly = 0.  0 + (-1) = -1.

在上面的示例中,foot 将位于条的顶部,因为它等于 1,而 sec 将位于条的下方,因为它的值为 -1。如果它的值是-2,它会是(英尺/(秒*秒)或英尺/(秒平方)。

于 2013-06-11T01:13:47.040 回答