0

我无法让我的 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,输出似乎重复了我输入的一部分。我正在使用全局数组列表。任何信息将不胜感激。

4

1 回答 1

2

我不知道 PEP8,但是,我可以从您发布的信息中看出一些事情:

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

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

    A. 复制 list(0) 到 tmp

    B. 对于 i = 1 到 N-1:

    (1) 将list(i)复制到list(i-1)

    C. 复制 tmp 到 list(N-1)

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

于 2009-11-29T15:44:19.477 回答