第4回レポート課題の解答例

課題 4-1 の解答例

方式1
{
i=1;
s=0;
while(i<=n){
    s=s+x[i];    <--※1
    i=i+1;
    }
ave=s/n;
i=1;
s=0;
while(i<=n){
    d=x[i]-ave;
    s=s+d*d;
    i=i+1;    <--※2
    }
v=s/n;
sd=sqrt(v);
}

方式2

{
i=1;
s=0;    <--※1
t=0;
while(i<=n){
    s=s+x[i]    <--※2
    t=t+x[i]*x[i]
    i=i+1;
    }
ave=s/n;
ave2=t/n;
v=ave2-ave*ave;
sd=sqrt(v);
}

課題 4-2 の解答例

{
i=1;
while(i<=n-1){
    maxj=i;
    max=a[maxj];
    j=i+1;
    while(j<=n){  
        if(a[j]>max){    <-- 必要な不等号を入れる。
            maxj=j;
            max=a[maxj];    <-- 適切な代入にする。
            }
        j=j+1;
        }
    a[maxj]=a[i];
    a[i]=max;
    i=i+1    <-- 適切な代入にする。
    }
}

課題 4-3 の解答例

入力する数値により i は 3,4,5,6,7 の五つのいずれかになる。
よって while /* c1 */ は i+1 回の判定を行ない、ループは i 回の
反復をする。次に、そのループのなかでは /* c2 */ の if 文により
c2,p3,p5, 或は c2,p4,p5 のどちらかのルートを通過して i 回の
反復後 c1,p6 で終わる。

例として i が 3 の場合は
 p1 p2   c1 c2 p4 p5   c1 c2 p3 p5   c1 c2 p4 p5   c1 p6