Download presentation
Presentation is loading. Please wait.
1
情報理論2 第4回 小林 学 湘南工科大学 2011年11月1日 〒251-8511 神奈川県藤沢市辻堂西海岸1-1-25
情報理論2 第4回 小林 学 〒 神奈川県藤沢市辻堂西海岸1-1-25 Tel (直通) Fax
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
[前回の課題2の解答例] Page 3 #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 + 3 144 = 55 + 89 8 = 3 + 5 233 = 89 + 144
5
Page 5 [前回の課題3の実行例]
6
[前回の課題3の解答例] Page 6 #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
Data [0] [1] [2] [3] [4] DataNo 画面出力 Input(2) 2 1 Output 2 Input(4) 4
Page 8 [前回の課題1の解答] (1) Data [0] [1] [2] [3] [4] DataNo 画面出力 Input(2) 2 1 Output 2 Input(4) 4 1
9
Data [0] [1] [2] [3] [4] DataNo 画面出力 4 1 Input(7) 4 7 2 Output 4 1 7
Page 9 Data [0] [1] [2] [3] [4] DataNo 画面出力 4 1 Input(7) 4 7 2 Output 4 1 7
10
Data [0] [1] [2] [3] [4] DataNo 画面出力 Input(4) 4 1 Input(12) 4 12 2
Page 10 [前回の課題1の解答] (2) Data [0] [1] [2] [3] [4] DataNo 画面出力 Input(4) 4 1 Input(12) 4 12 2 Input(22) 4 12 22 3 Output 4 12 2 22
11
Data [0] [1] [2] [3] [4] DataNo 画面出力 4 12 2 Output 4 1 12 Output 4
Page 11 Data [0] [1] [2] [3] [4] DataNo 画面出力 4 12 2 Output 4 1 12 Output 4
12
[前回の課題4] Page 12 スタック構造を実現するプログラムを作成しなさい [実行例]
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
[解答] 変数の値 画面出力 i siki 0 0 2 2 4 4 6 6 8 8 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 2 4 6 8
15
[解答] 変数の値 画面出力 i siki 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
16
[解答] 変数の値 画面出力 i data[i] 0 1 1 4 4 7 7 10 10 13 13 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
[解答] 変数の値 画面出力 i data[i] 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]
18
[解答] 変数の値 画面出力 i data[i] siki 0 7 8 9 10 11 0 0 2 4 7 9
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 2 4 7 9 11 (注意)変更のない変数は書かなくてよい
19
[解答] 変数の値 画面出力 i data[i] siki (注意)変更のない変数は書かなくてよい 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 (注意)変更のない変数は書かなくてよい
20
[解答] 変数の値 画面出力 i data[i] 0 7 8 9 10 11 0 8 8 (注意)変更のない変数は書かなくてよい 9 10
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 8 9 10 11 (注意)変更のない変数は書かなくてよい
21
[解答] 変数の値 画面出力 i data[i] (注意)変更のない変数は書かなくてよい 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] (注意)変更のない変数は書かなくてよい
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.