我刚找到一本书,它描述了一个与我所需要做的非常相似的程序。然而,这本书来自1972年,展示了ALGOL的解决方案,而我需要用更新的语言编写我的代码。我试图找出我是否正确地理解前面的ALGOL代码在做什么:
,就像sl = ff;语句在SAS中所做的那样,只分配一个值?
填充矩阵a,其中i是行号,j是列数,m是(显然)i*j。
发布于 2015-12-10 14:48:17
发布于 2015-12-29 02:28:20
我同意邻近的意见1至3。
上面给出的代码在几个方面是异常的。我怀疑有抄写错误。
首先,“开始”和“结束”配对是不完整的。
在Algol中,‘开始…结束’对要么是一个复合语句,要么,如果里面也有声明,那么它就是一个块。
在这段代码中,“对于i:= 1第1步,直到m”,下面的内容就像一个带有'begin‘的复合语句一样开始,但是没有看到匹配的'end’。如果我们假设'end‘作为下一个令牌出现,那么这将完成由它控制的'for i:= .’的复合语句。条款。所有这个复合语句都将被重复m次,其中i包含从1到m的连续值。
第二个异常是第二个循环,由'for j:= .‘控制。只附加到下一个语句(直到';'),并将相同的值集合汇总到每个ai中,然后用1/aj覆盖这个集合!(我假设‘斜率’是一个标量变量,而不是一个无参数的函数,以便在每次执行时提供相同的值。)
第三,在Algol中,在循环结束后对“for”循环中的控制变量的值进行任何假设并不是一个好主意。在许多Algol实现中,这里都会留下包含m+ 1的j。因此,从a1到am的所有元素都将包含1/am + 1。如果am +1包含零,或者如果一个被声明为‘实数组a1:m;’,那么它可能会在“无效索引”下失败。
如果这里有一个转录错误,我们假设最后的语句应该是ai:= 1/ai,所有的值计算和存储在a1中.我将仍然是一样的,有更快的方式编码这一点!
我希望这篇长篇大论(比我希望的更长)能有所帮助。
https://stackoverflow.com/questions/34048342
复制相似问题