質問<2958>2006/2/14
次のプログラムで最後に出力される、u、vを数式(総和記号とnを用いる)で表せ。
program test(input,output);
var i,n,s,t:integer;
u,v:real;
begin
read(n);
s:=0;
t:=0;
i:=0;
while i<=n do
begin
s:=s+i;
t:=t+i*i;
i:=i+1
end;
u:=s/n;
v:=t/n;
writeln('n=',n,'のときu=',u);
writeln('n=',n,'のときv=',v)
end.
という問題です。
どうもpascalができなくわかりません。
どうか教えてください。よろしくお願いします。
★希望★完全解答★
お便り2006/2/17
from=naoya
久しぶりに来てみてみました・・・。
PASCALですが、特に難しい部分はないはずです。
とりあえず簡単に説明します。
・var
変数宣言。integerは整数型、realは実数型。
・read(dest)
inputから変数destに入力を読み込む。
・while [条件] do begin ... end;
[条件]が満たされている間は、begin...end間を実行し続ける。
・x:=y
代入です。xという変数に値yを代入します。
・writeln(...)
outputに1行書き出します。
さて、問題のプログラムですが、
iが0からnまでwhile doのbegin...endを繰り返してます。
sはもともと0のところにiを足していっているので、
n
s = 0 + 1 + 2 +…+ n = Σi
i=0
tはもともと0のところにi*iつまりi^2を足していっているので、
n
t = 0^2 + 1^2 + 2^2 +…+ n^2 = Σi^2
i=0
そして、whileループを抜けたあとで、
u,vはそれぞれs,tをnで割ったものになっているので、
n
u = Σi/n
i=0
n
v = Σ(i^2)/n
i=0
となります。