210 likes | 326 Views
湘南工科大学. 2011 年 11 月 1 日. 情報理論2 第4回. 小林 学. 〒251-8511 神奈川県藤沢市辻堂西海岸 1-1-25. Tel. 0466-30-0232( 直通 ). Fax. 0466-34-5932. kobayasi@info.shonan-it.ac.jp. Page 2. [ 前回の課題2 ]. (1) double 型の配列 x[5] を用意し,それぞれにキーボードから数字を入力する. (2) double 型の変数 sum を用意し, x[0] ~ x[4] の和を計算.
E N D
湘南工科大学 2011年11月1日 情報理論2 第4回 小林 学 〒251-8511 神奈川県藤沢市辻堂西海岸1-1-25 Tel. 0466-30-0232(直通) Fax. 0466-34-5932 kobayasi@info.shonan-it.ac.jp
Page 2 [前回の課題2] (1) double 型の配列 x[5] を用意し,それぞれにキーボードから数字を入力する. (2) double 型の変数 sum を用意し,x[0]~x[4] の和を計算. (3) double 型の変数 ave を用意し, x[0]~x[4] の平均を計算. (4) double 型の変数 sig を用意し, x[0]~x[4] の分散を計算. (5) sum,ave,sig をそれぞれ表示するプログラム作成 [参考] 入力が 4 1 5 7 3 のとき sum = 4 + 1 + 5 + 7 + 3 = 20 ave = sum / 5 = 4 sig =( (4–ave)2+ (1–ave)2+ (5–ave)2+ (7–ave)2+ (3–ave)2 ) / 5 = 4
Page 3 [前回の課題2の解答例] #include<stdio.h> void main(void){ int i; double x[5], sum, ave, sig; printf("配列x:"); for(i=0;i<5;i++) scanf("%lf", &x[i]); sum = 0; for(i=0;i<5;i++) sum += x[i]; //和 ave = sum / 5; //平均 sig = 0; for(i=0;i<5;i++) sig += (x[i]-ave)*(x[i]-ave); sig = sig / 5; printf("sum=%f, ave=%f, sig=%f\n", sum, ave, sig); }}
Page 4 [前回の課題3] • 100項までのフィボナッチ数列を表示するプログラム作成 • フィボナッチ数列とは以下のように続く数列 • 0 1 1 2 3 5 8 13 21 34 55 89 144 • (2) 100項までのフィボナッチ数列の和を表示するプログラム作成 [参考] フィボナッチ数列は,前の2項の和 0 13 = 5 + 8 1 21 = 8 + 13 1 = 0 + 1 34 = 13 + 21 2 = 1 + 1 55 = 21 + 34 3 = 1 + 2 89 = 34 + 55 5 = 2 + 3144 = 55 + 89 8 = 3 + 5233 = 89 + 144
Page 5 [前回の課題3の実行例]
Page 6 [前回の課題3の解答例] #include<stdio.h> void main(void){ int i, fibo[41], sum=0; fibo[0] = 0; fibo[1] = 1; for(i=2;i<=40;i++){ fibo[i] = fibo[i-1] + fibo[i-2]; sum += fibo[i]; printf("fibo[%d]=%d\n", i, fibo[i]); } printf("sum=%d", sum); }
Page 7 [前回の課題1] int DataNo=0; :データの数を表す int 型変数 int Data[5]; :データを格納する int 型配列 • 上の定義に対して,以下の命令を実行したときの配列Data の内容と DataNo の変化,画面出力を示しなさい • Input(2) → Output → Input(4) → Input(7) → Output • (1)と同様に,以下の結果を示しなさい • Input(4) → Input(12) → Input(22) → Output → Output → Output
Page 8 [前回の課題1の解答] (1) 画面出力 [1] [4] Data [0] [3] [2] DataNo 0 Input(2) 1 Output 2 0 Input(4) 1
Page 9 画面出力 [1] [4] Data [0] [3] [2] DataNo 1 Input(7) 2 Output 7 1
Page 10 [前回の課題1の解答] (2) 画面出力 [1] [4] Data [0] [3] [2] DataNo 0 Input(4) 1 Input(12) 2 Input(22) 3 Output 22 2
Page 11 画面出力 [1] [4] Data [0] [3] [2] DataNo 2 Output 12 1 Output 4 0
Page 12 [前回の課題4] スタック構造を実現するプログラムを作成しなさい [実行例]
Page 13 [前回の課題4の解答] #include<stdio.h> void main(void){ int select, i, DataNo=0, Data[5], input; while(1){ printf("\nInputならば0,Outputならば1を入力:"); scanf("%d",&select); if(select==0){ printf("入力データ:"); scanf("%d",&input); Data[DataNo] = input; DataNo++; }else{ DataNo--; printf("出力:%d\n",Data[DataNo]); } printf("Data="); for(i=0;i<DataNo;i++) printf(" %d",Data[i]); } }
Page 14 [例題1] 次のプログラムの変数の値をトレースしなさい [解答] #include<stdio.h> void main(void){ int i, siki; for(i=0;i<5;i++){ siki = 2*i; printf("%d\n", siki); } } 画面出力 変数の値 i siki • 0 0 • 2 • 4 • 6 • 8 • 0 • 2 • 4 • 6 • 8
Page 15 [課題1] 次のプログラムの変数の値をトレースしなさい [解答] #include<stdio.h> void main(void){ int i, siki; for(i=0;i<5;i++){ siki = 2*i+1; printf("%d\n", siki); } } 画面出力 変数の値 i siki • 0
Page 16 [例題2] 次のプログラムの変数の値をトレースしなさい [解答] #include<stdio.h> void main(void){ int i, siki, data[5]; for(i=0;i<5;i++){ data[i] = 3*i+1; printf("%d\n", data[i]); } } 画面出力 変数の値 i data[i] • 0 1 • 4 • 7 • 10 • 13 • 1 • 4 • 7 • 10 • 13
Page 17 [課題2] 次のプログラムの変数の値をトレースしなさい [解答] #include<stdio.h> void main(void){ int i, siki, data[5]; for(i=0;i<5;i++){ data[i] = 2*i+2; printf("%d\n", data[i]); } } 画面出力 変数の値 i data[i] • 0
Page 18 [例題3] 次のプログラムの変数の値をトレースしなさい [解答] #include<stdio.h> void main(void){ int i, siki, data[5]; for(i=0;i<5;i++) data[i] = i+7; for(i=0;i<3;i++){ siki = 2*i; printf(“%d\n”, data[siki]); } } 画面出力 変数の値 i data[i] siki • 0 7 • 8 • 9 • 10 • 11 • 0 0 • 2 • 4 • 7 • 9 • 11 (注意)変更のない変数は書かなくてよい
Page 19 [課題3] 次のプログラムの変数の値をトレースしなさい [解答] #include<stdio.h> void main(void){ int i, siki, data[5]; for(i=0;i<5;i++) data[i] = 3*i; for(i=0;i<3;i++){ siki = i+2; printf(“%d\n”, data[siki]); } } 画面出力 変数の値 i data[i] siki • 0 • 0 (注意)変更のない変数は書かなくてよい
Page 20 [例題4] 次のプログラムの変数の値をトレースしなさい [解答] #include<stdio.h> void main(void){ int i, data[5]; for(i=0;i<5;i++) data[i] = i+7; for(i=0;i<4;i++){ data[i] = data[i+1]; printf(“%d\n”, data[i]); } } 画面出力 変数の値 i data[i] • 0 7 • 8 • 9 • 10 • 11 • 0 8 • 9 • 10 • 11 • 8 • 9 • 10 • 11 (注意)変更のない変数は書かなくてよい
Page 21 [課題4] 次のプログラムの変数の値をトレースしなさい [解答] #include<stdio.h> void main(void){ int i, data[5]; for(i=0;i<5;i++) data[i] = 3*i; for(i=0;i<3;i++){ data[i] = data[2*i]; printf(“%d\n”, data[i]); } } 画面出力 変数の値 i data[i] • 0 • 0 (注意)変更のない変数は書かなくてよい