質問<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 となります。