2010-01-07 6 views
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 

, 난 오류 변수가카운트 된 루프는

"내가 이미 선언 된"나는 변수로 난을 선언 할 때 , 나는 오류 "내가 선언되지 않은"수

년 인구
==== ==========
2000 XXXXXXXXXX ~ 2020 XXXXXXXXXX

:

출력은 다음과 같이 보일 것이다

여기 비슷하지만 훨씬 간단한 프로그램입니다. 위의 프로그램에서 내가 시도한 것을 성공적으로 수행했습니다.

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

도와주세요! 그리고 미리 감사드립니다!

답변

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 
1

i를 신고해야합니다. 저는 2000 년부터 2020 년까지 변하는 변수입니다.

var i : int는 트릭을해야합니다.

+0

감사합니다 masfenix,하지만 그 시도. "나는 이미 선언되었습니다."라는 오류가 있습니다. 필자는 일종의 역설을 발견했습니다. – starbuck

+0

아마도 숫자 범위의 "두 점"사이의 간격을 의미하는 사실입니다. 남자 turing은 고등학교 LOL에서 기억을 되살려줍니다. 5 ~ 6 년 전. – masfenix

1

또 다른 대답을 튜링에 대한 더 적은을 알고 을 그것은 i이 루프 내에서 범위 내에 있다고 추측합니다. 그 위치가 선언 된 곳이기 때문에 마지막에 루프 외부에 i을 사용하려고하면 오류가 발생합니다. 왜 당신이 게시 한 작은 프로그램이 작동하지만 더 큰 프로그램은 작동하지 않는지 설명합니다. 또한 루프 외부에서 i을 먼저 선언하고 루프 문에서 다시 선언 할 때 오류가 발생하는 이유는 무엇입니까?

나는 그것이 Wolever가 얻고있는 것과 똑같은 것이라고 생각하지만 실제로 이유를 설명하지는 않았다. (우리가 있다면 그의 대답은 그것을 수정해야 권리에 대한 i은 루프에서 유효 인) 내가 설명 할 수없는 방법

+0

그게 나에게 발생하지 않았지만 그것은 당신의 두 권리로 보입니다. 지금 내 수학 문제가 무엇인지 알아 내려고 ... – starbuck

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 
-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 
+1

답변에는 설명이 포함되어 있어야하며 올바른 것으로 파악되어야합니다. http://stackoverflow.com/tour – ericbn

1

귀하의 주요 문제는 i이 범위를 벗어난 것입니다. ifor 루프 내에서만 사용할 수 있습니다. for 루프 내에 put 문을 넣으십시오. 이와 같이 :

% 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의 솔루션은 작년의 인구 증가 만 가져옵니다. 당신의 프로그램은 또한 전체 인구가 아닌 인구 증가율만을 제공한다는 점에서 논리적 인 오류가 있습니다.

Turing이 매우 쓸모없는 언어이기 때문에 교사와 문제가 해결되었다고 가정합니다. 몇 년 전에지지를 잃었습니다. 나는 여전히 9 학년 때부터 기억하고 있지만, 튜링과 관련된 질문은 여기에 게시하는 것이 좋지 않을 수 있습니다. 아무도 언어를 이해할 수 없으며 규칙을 이해합니다.도움을

자료 : http://touque.ca/EC/programming/Turing/

관련이 좀 더 nitpicky 세부 다음 for 문이 제대로 들여 쓰기 아니며, by 1이 필요하지 않습니다.

+0

Thanks Lai를주의 깊게 읽어보십시오. 이 질문은 2010 년에 요청되었습니다 ... – starbuck