第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