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は宣言されていません」というエラー変数が表示されます。iを変数として宣言すると、「iはすでに宣言されています」というエラーが表示されます。

出力は次のようになります。

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

これは似ていますが、はるかに単純なプログラムで、上記のプログラムでやろうとしていることを成功させました。

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

助けてください!よろしくお願いします!

4

6 に答える 6

1

あなたは私を宣言しなければなりません。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 ループ内にステートメントを配置しますforputこのような:

% 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 のソリューションでは、昨年の人口増加しか発生しません。あなたのプログラムには、総人口ではなく、人口増加率のみを与えるという点で、論理的な誤りもあります。

チューリングは非常に時代遅れの言語であるため、問題は先生と一緒に解決されたと思います。何年も前にサポートを失いました。私は今でも 9 年生のことをいくつか覚えていますが、チューリング関連の質問をここに投稿するのは良い考えではないかもしれません。

ヘルプのリソース: http://touque.ca/EC/programming/Turing/

関係のないもう少し細かい点:forステートメントは適切にインデントされておらず、by 1不要です。

于 2017-08-10T17:29:08.640 に答える
0

私は Turing についてあまり知りませんが、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 に答える