Presentation is loading. Please wait.

Presentation is loading. Please wait.

情報理論2 第6回 小林 学 湘南工科大学 2011年11月15日 〒 神奈川県藤沢市辻堂西海岸1-1-25

Similar presentations


Presentation on theme: "情報理論2 第6回 小林 学 湘南工科大学 2011年11月15日 〒 神奈川県藤沢市辻堂西海岸1-1-25"— Presentation transcript:

1 情報理論2 第6回 小林 学 湘南工科大学 2011年11月15日 〒251-8511 神奈川県藤沢市辻堂西海岸1-1-25
情報理論2 第6回 小林 学 〒  神奈川県藤沢市辻堂西海岸1-1-25 Tel (直通) Fax

2 [前回の課題1] 数を数える(カウント) [課題1]次の配列の2以上の数を数えるプログラムを作成しなさい Data [0] [1] [2]
Page 2 [前回の課題1] 数を数える(カウント) [課題1]次の配列の2以上の数を数えるプログラムを作成しなさい Data [0] [1] [2] [3] [4] 2 1 4 実行結果 用意する変数: count(1の数を入れる) 初期値: count = 0

3 [前回の課題1] 数を数える(カウント) i Data[i] count 初期値: 繰り返し: 0 2 0→1 1 1 1
Page 3 [前回の課題1] 数を数える(カウント) i Data[i] count 初期値: 繰り返し: 0 2 0→1 1 1 1 2 2 1→2 3 4 2→3 4 0 2 if(Data[i]>=2) count++;

4 Page 4 [前回の課題1の解答] #include<stdio.h> void main(void){ int i, Data[5]={2, 1, 2, 4, 0}; //データの初期化 int count; count = 0; //カウントの初期化 for(i=0;i<5;i++){ if(Data[i]>=2) count++; //Data[i]が1ならば //countを1増やす } printf("Data中の2以上の数:%d\n",count);

5 アルゴリズム:最大値・最小値 Data [0] [1] [2] [3] [4] 5 3 6 8 2 実行結果
Page 5 アルゴリズム:最大値・最小値 最大の位置 Data [0] [1] [2] [3] [4] 5 3 6 8 2 void main(void){ int Data[5]={5, 3, 6, 8, 2}; //配列Dataの初期化 実行結果 用意する変数: max(最大値の候補), position(最大の位置の候補) 初期値: max = Data[0] position = 0

6 アルゴリズム:最大値・最小値 i Data[i] max position 初期値: 5 0 繰り返し: 1 3 5 0 (for文)
Page 6 i Data[i] max position 初期値: 5 0 繰り返し: (for文) 2 6 5→6 0→2 3 8 6→8 2→3 if(Data[i]>max){ max = Data[i]; position = i; } [課題2]配列Data[5]={5, 3, 6, 8, 2}の最大値を求めるプログラムを作成しなさい

7 [前回の課題2の解答] Page 7 #include<stdio.h> void main(void){ int i, Data[5]={5, 3, 6, 8, 2}; //データの初期化 int max, position; max = Data[0]; //初期化 position = 0; //初期化 for(i=1;i<5;i++){ if(Data[i]>max){ max = Data[i]; position = i; } printf("最大の位置:%d\n", position); printf("最大値:%d\n", max);

8 [前回の課題3]キーボードから5個の整数を入力し,最小値(min)と最小の位置(position)を求めるプログラムを作成しなさい.
Page 8 [前回の課題3]キーボードから5個の整数を入力し,最小値(min)と最小の位置(position)を求めるプログラムを作成しなさい. ヒント: printf("5つの整数を入力:\n"); for(i=0;i<5;i++) scanf("%d",&Data[i]);

9 [前回の課題3の解答] Page 9 #include<stdio.h> void main(void){ int i, Data[5], min, position; printf("5つの整数を入力:\n"); for(i=0;i<5;i++) scanf(“%d”,&Data[i]); //入力 min = Data[0]; //初期化 position = 0; //初期化 for(i=1;i<5;i++){ if(Data[i] < min){ min = Data[i]; position = i; } printf(“最小の位置:%d\n", position); printf(“最小値:%d\n", min);

10 データ構造2:キュー Data [0] [1] [2] [3] [4] DataNo 画面出力 13 1 Input(9) 13 9 2
Page 10 Data [0] [1] [2] [3] [4] DataNo 画面出力 13 1 Input(9) 13 9 2 Input(22) 13 9 22 3 Output 9 22 2 13 Output 22 1 9

11 Page 11 [課題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

12 配列 Data の内容をシフトさせる以下のプログラムを完成させなさい
[課題2] Page 12 配列 Data の内容をシフトさせる以下のプログラムを完成させなさい #include<stdio.h> void main(void){ int i, Data[5]={5,7,2,9,3}; printf("Data="); for(i=0;i<5;i++) printf(" %d",Data[i]); //ここに配列をシフトさせるプログラムを書く printf("\nData="); } [実行結果]

13 [課題3] Page 13 次ページのスタックのプログラムを修正して,以下のキューを実現するプログラムを作成しなさい [実行例]

14 Page 14 [参考2:スタックのプログラム] #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]);

15 Page 15 [課題4]データ構造をキューとし,Input あるいはOutput されるたびにキュー(配列Data)の中の最大値と最大の位置を画面出力するプログラムを作成しなさい.

16 Page 16 実行結果


Download ppt "情報理論2 第6回 小林 学 湘南工科大学 2011年11月15日 〒 神奈川県藤沢市辻堂西海岸1-1-25"

Similar presentations


Ads by Google