質問<3557>2007/6/11
from=りす
「コンピュータ」


次のプログラムはなにをするものか、出力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
from=JUN*2


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


お便り2007/6/16
from=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
from=亀田馬志


(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・・・・・・②
と書き換えることが出来る。
あとは上記の漸化式を解けば良い。