2
% calculates the population of a city from year 2000 to 2020

var popstart : int := 80000
var popgrowth : real
var popend : real
var growthrate : real := 0.03

% popgrowth := popstart * growthrate
    for i : 2000..2020 by 1
popgrowth := popstart * growthrate
end for

put "year  population"
put "====  =========="
put  i, "  ", popgrowth

当我运行程序时,我得到错误变量“我还没有被声明”当我将 i 声明为变量时,我得到错误“我已经被声明”

输出应如下所示:

年人口
==== ==========
2000 xxxxxxxxxx ~ 2020 XXXXXXXXXX

这是一个类似但更简单的程序,我成功地完成了我在上面的程序中尝试做的事情。

for i : 4 .. 19 by 3
    put i
end for

请帮忙!并提前感谢!

4

6 回答 6

1

你必须声明 i。i 是一个从 2000 年开始一直到 2020 年的变量。

var i: int 应该可以解决问题。

于 2010-01-07T05:33:24.680 回答
1

另一个答案,对图灵知之甚少....我猜这i只是在循环期间的范围内,因为这是声明它的地方,所以当你尝试在i最后使用循环外时它会抛出错误. 这就解释了为什么您发布的较小程序有效,而较大的程序无效。i以及为什么当您尝试首先在循环外声明然后在循环语句中再次声明时会引发错误。

我相信这与 Wolever 的意图相同,但并没有真正解释原因。(如果我们正确地认为i仅在循环中有效,他的答案应该可以解决)

于 2010-01-07T07:08:40.857 回答
1

您的主要问题是i超出范围。i只能在循环for内使用。将put语句放在 for 循环中。像这样:

% calculates the population of a city from year 2000 to 2020

var popstart : real := 80000
var popgrowth : real
var popend : real
var growthrate : real := 0.03

% popgrowth := popstart * growthrate
for i : 2000..2020
    popgrowth := popstart * growthrate
    popstart += popgrowth
    put "year  population"
    put "====  =========="
    put  i, "  ", popstart
end for

@DavidWolever 的解决方案只会产生去年的人口增长。你的程序也有一个逻辑错误,因为它只会给出人口增长率,而不是总人口。

我假设您的老师已经解决了这个问题,因为图灵是一种非常过时的语言。几年前它失去了支持。我还记得九年级的一些问题,但在这里发布与图灵相关的问题可能不是一个好主意,因为没有人真正理解这种语言和它的约定。

帮助资源: http: //touque.ca/EC/programming/Turing/

一些无关紧要的细节:该for语句没有正确缩进,并且by 1是不必要的。

于 2017-08-10T17:29:08.640 回答
0

我对图灵了解不多,但我怀疑for i... 是i.

所以,我不知道你如何解决它,但你可以通过这样做来解决它:

var last_year: int
for i : 2000..2020 by 1
    popgrowth := popstart * growthrate
    last_year = i
end for

put "year  population"
put "====  =========="
put  last_year, "  ", popgrowth
于 2010-01-07T06:10:00.757 回答
0
% calculates population growth for city of Whitby between 2000 and 2020.

var popstart : int := 80000
var popgrowth : real
var growthrate : real := 0.03

put "year  population"
put "====  =========="
put "2000  80000"

popgrowth := popstart
for i : 2001 .. 2020 by 1
    popgrowth := popgrowth + (popgrowth * growthrate)
    put i, "  ", popgrowth:0:2
end for
于 2010-01-07T21:30:38.937 回答
-2

我不怎么解释,但你可以弄清楚这是否正确。(我对你的内容做了一些改变。)

var popstart : int := 80000
var popgrowth : real
var popend : real
var growthrate : real := 0.03
var number:real
% popgrowth := popstart * growthrate
    for i : 2000..2020 by 1
    number:=i
popgrowth := popstart * growthrate
end for

put "year  population"
put "====  =========="
put  number, "  ", popgrowth
于 2014-10-25T20:22:21.493 回答