1 / 21

小林 学

湘南工科大学. 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] の和を計算.

kimball
Download Presentation

小林 学

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 湘南工科大学 2011年11月1日 情報理論2 第4回 小林 学 〒251-8511 神奈川県藤沢市辻堂西海岸1-1-25 Tel. 0466-30-0232(直通) Fax. 0466-34-5932 kobayasi@info.shonan-it.ac.jp

  2. 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

  3. 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); }}

  4. 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

  5. Page 5 [前回の課題3の実行例]

  6. 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); }

  7. 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

  8. Page 8 [前回の課題1の解答] (1) 画面出力 [1] [4] Data [0] [3] [2] DataNo 0 Input(2) 1 Output 2 0 Input(4) 1

  9. Page 9 画面出力 [1] [4] Data [0] [3] [2] DataNo 1 Input(7) 2 Output 7 1

  10. Page 10 [前回の課題1の解答] (2) 画面出力 [1] [4] Data [0] [3] [2] DataNo 0 Input(4) 1 Input(12) 2 Input(22) 3 Output 22 2

  11. Page 11 画面出力 [1] [4] Data [0] [3] [2] DataNo 2 Output 12 1 Output 4 0

  12. Page 12 [前回の課題4] スタック構造を実現するプログラムを作成しなさい [実行例]

  13. 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]); } }

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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 (注意)変更のない変数は書かなくてよい

  19. 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 (注意)変更のない変数は書かなくてよい

  20. 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 (注意)変更のない変数は書かなくてよい

  21. 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 (注意)変更のない変数は書かなくてよい

More Related