为什么Pascal的Triangle在我的数组的输出中表现出来(不是有意的)?

时间:2009-11-29 15:02:39

标签: pep8-assembly

我在使用Pep / 8装配程序生成正确的输出时遇到问题。目标是输入一个数字 n ,然后输入 n 数字,然后输出将第一个数字放在数组的末尾。输入和正确输出的示例如下:

“三个数字,其中1,2和3在数组中。” 输入: 3 1 2 3

“数组中的第一个数字1位于数组的末尾。” 正确输出: 2 3 1

我的输入和输出是:

输入: 3 1 2 3 输出错误: 2 2 1 期望输出: 2 3 1

输入: 4 1 2 3 4 输出错误: 2 3 3 1 期望输出: 2 3 4 1

输入: 5 1 2 3 4 5 输出错误: 2 3 3 4 1 期望输出: 2 3 4 5 1

我的汇编代码的三个部分可以在以下位置看到: http://militarystudents.files.wordpress.com/2009/11/pic1of3.png http://militarystudents.files.wordpress.com/2009/11/pic2of3.png http://militarystudents.files.wordpress.com/2009/11/pic3of3.png

n = 1且n = 2的输出正确。对于 n > 2输出似乎重复了我输入的一部分。我正在使用全局数组列表。任何信息将不胜感激。

1 个答案:

答案 0 :(得分:2)

我不知道PEP8,但是,我可以从您发布的信息中说出一些内容:

  1. 这不是Pascal的三角形,没有任何东西被加在一起,因为输出没有新的(更大的)值,它们只是错误顺序的输入值的副本&计数。

  2. 这似乎是您实现列表轮换算法的错误。不知道PEP8,我不知道错误是什么,但这是正确的算法:

    一个。将列表(0)复制到tmp

    B中。对于i = 1到N-1:

    (1)将列表(i)复制到列表(i-1)

    ℃。将tmp复制到列表(N-1)

  3. 如果我猜错了,我会说它在步骤“B”中,因为看起来你的循环在它应该之前终止,所以后面的一个或多个值不是向前复制。