第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