質問<3557>
「「コンピュータ」」
日付 2007/6/11
質問者 りす


次のプログラムはなにをするものか、出力sを数学の総和記号Σを用いて表し、説明せよ。

program test(input,output);
var i,n,s:integer;
bigin
read(n)
s:=0;
i=1;
while i=2*n do
begin
s=s+i*;
i=i+2
end;
writeln('n'=,n,'のときs=',s)
end.

★希望★完全解答★

お便り
日付 2007/6/14
回答者 jun*2


手持ちのBASICでプログラミングしましたが、お力になれませんでした。
ご質問のプログラムはPascalですよね?
でしたら、一度実際にPascalがダウンロードされたPCでプログラミングされることをおすすめします。

お便り
日付 2007/6/16
回答者 jjon.com


タイプミスが多くてこのままでは正常に実行できないです。

while i<=2*n do
begin
s:=s+i;
i:=i+2;
end;

であるなら
求められる値sは 1+3+5+7+...+(2*n-1) となりますから,
s = Σ_(i=1~n) (2×i-1)

お便り
日付 2007/6/17
回答者 亀田馬志


(defun program-test ()
(let (n (s 0) (i 1)) ;初期条件n, s, iを決める
(setq n (read)) ;nに直接入力
(loop ;ループ開始
(or (and (< (* 2 n) i) ;iが2nを超えたら出力表示
(return (format t "n=~Aのときs=~A~%" n s)))
(and (setq s (+ s i)) ;sをs+1に更新、iをi+2に更新
(setq i (+ i 2)))))))

>次のプログラムはなにをするものか
n(直接入力された数)の2乗を返すプログラム

>出力sを数学の総和記号Σを用いて表し、説明せよ。
プログラム上で
s=s+i
と表される部分は、数学的には第k番目の操作を_kと言う添え字で書き換えれば
S_{k+1}=S_{k}+i・・・・・・①
と表される。
ここでk≧1とすれば、iが初項1、公比2の等差数列である事に気をつければ①は
S_{k+1}-\(S_{k}\)=1+2*(k-1)
=2*k-1・・・・・・②
と書き換えることが出来る。
あとは上記の漸化式を解けば良い。