考虑乘法的基本示例,其中 12*24 = 288。现在我正在寻找单个或多个数据结构,我可以在其中保留每个数据结构,其中每个信息都可以在乘法过程中执行的中间步骤。例如 2*4 取 8,1*4 取 4,等等。我需要存储这些中间信息,以便于我准确地告诉用户他在操作中出错的地方。
问问题
88 次
1 回答
0
首先关注您需要提供的能力。
例如,用户将输入他的答案的一位数,您需要检查它并给出反馈。例如,在 28 x 57 中,假设您正在教传统的“长乘法”,那么用户需要将 28 乘以 7,以单位记录 6,携带 5 然后 9,记住将携带的 5 和 1 相加。假设他输入4 在十列中,你可能想说“是的,7 x 2 是 14,但不要忘记加上你携带的 5”
因此,为了支持这一点,您需要以下功能
getCorrectWorkingDigit( int leftDigitIndex, int rightDigitIndex)
在这种情况下,我们会调用
getCorrectWorrkingDigit( 1, 0 ) and get 9 as the answer
和
getWorkingCarryDigit( int leftDigitIndex, int rightDigitIndex)
所以
getWorkingCarryDigit( 1, 0 ) and get 5 as the answer
您将需要一些其他此类函数,包括用于最终答案数字的函数。
现在,什么数据结构可以让你做到这一点?您的要求是使您的功能得以实现。很明显,您可以构建某种对象数组,代表每个工作位置以及最终答案中的每个位置。但我认为这太过分了,您可以直接针对问题实现这些功能。您实际需要的只是两个整数(在我的示例中为 28 和 57),您可以即时计算函数值,无需保留目标。
写完所有内容后,我刚刚意识到您可能还想保留用户输入的值,为此数据结构可能很有用,保留单个数字会很方便。
对于和“行”的工作,以及最终的结果,一个数字数组怎么样,其中索引对应于 10 的幂,所以将 196 表示为
[6, 9, 1]
并将其放入一个 Set 中,以正确数字的十的幂为键。在我的 28 x 57 中:
0 -> [6, 9, 1] // this is 7 x 28
10 -> [0, 4, 1] // this is 5 x 28
于 2013-10-08T06:42:59.230 回答