配列の扱い、探索 有効範囲と記憶域期間 第12回 [7月10日、H.15(‘03)] 今日のメニュー 1 前回の課題の復習 プログラミング演習('03) 2017/3/21 第12回 [7月10日、H.15(‘03)] 配列の扱い、探索 有効範囲と記憶域期間 今日のメニュー 1 前回の課題の復習 2 前回の宿題の復習 3 今回の課題 6 演習 PE03-12.ppt PE03-12.ppt
前回の課題 (1)List6-1を参考に演習6ー1(118頁) (2)List6-2を参考に演習6ー2(118頁) プログラミング演習('03) 2017/3/21 前回の課題 (1)List6-1を参考に演習6ー1(118頁) (2)List6-2を参考に演習6ー2(118頁) (3)List6-3を参考に演習6ー3(119頁) List6-6を参考に演習6ー4(121頁) (4)List6-7,8を参考に演習6ー5(123頁) (5)演習6ー6(125頁) ファイル名は enB-****.c 提出はいつもと同様、リスト印刷とファイル転送 PE03-12.ppt
演習6-1の関数の中身を記述 演習6-2の関数の中身を記述 演習6-3の関数の中身を記述 演習6-4の関数の中身を記述 #include <stdio.h> int minof( int x, int y) { } int min3( int x, int y, int z) { } int cube( int x) { } int pow4( int x) { } 演習6-1の関数の中身を記述 演習6-2の関数の中身を記述 演習6-3の関数の中身を記述 演習6-4の関数の中身を記述
演習6-5の関数の中身を記述 演習6-6の関数の中身を記述 void alert( int no) { } void hello( void ) { } int main(void) { int na, nb, nc; /*演習6-1,6-2の場合*/ /*整数を入力する*/ printf("小さい方の値は %d です。\n", minof( na, nb) ); printf("3数中の最小値は %d です。\n", min3( na, nb, nc) ); ・・・・・・ 演習6-5の関数の中身を記述 演習6-6の関数の中身を記述
#include <stdio.h> /*演習6-1、2、3*/ int minof(int x, int y) { return ( (x-y)>0 ? y : x ); } int min3(int x, int y, int z) { int min = x; if ( y < min ) min = y; if ( z < min ) min = z; return ( min ); } int cube(int x) { return ( X*x*x); } int main(void) { ・・・・ }
前回の課題(演習6-4) 関数を利用する 前に定義しておく sqr( sqr(x) ) #include <stdio.h> プログラミング演習('03) 2017/3/21 前回の課題(演習6-4) #include <stdio.h> int sqr(int x) { return ( x * x ); } int pow4(int x) { return ( sqr(x) * sqr(x) ); } int main(void) { int a; printf("整数を入力せよ=>"); scanf("%d", &a); printf("四乗は %d です。\n", pow4(a)); return(0); } 関数を利用する 前に定義しておく sqr( sqr(x) ) PE03-12.ppt
while(no-->0) putchar('\a'); #include <stdio.h> /*演習6-5*/ void alert(int no) { int i; for ( i=0; i<no; i++) putchar('\a'); return; } int main(void){ int n; printf("Enter n =>"); scanf("%d",&n); alert(n); return (0); while(no-->0) putchar('\a');
#include <stdio.h> /*演習6-6*/ void hello( void ) { puts("こんにちは。"); return; } int main(void){ int n, i; printf("Enter n =>"); scanf("%d",&n); for ( i=1; i<=n; i++) hello(); return (0);
課題の提出について ・main関数は最後に記述する ・演習6-4の pow4 は教科書List6-3の関数 sqr を用いる ・プログラムの構成 #include <stdio.h> /* 関数1を定義する */ int minof(・・・) { ・・・ } /* 関数2を定義する */ ・・・ int main(void) { int ・・・ puts("番号・氏名"); 必要な関数を呼び出す } ・main関数は最後に記述する ・演習6-4の pow4 は教科書List6-3の関数 sqr を用いる return(x*x*x*x); return( sqr(x)*sqr(x) ); return( sqr( sqr(x) ) );
前回の宿題 (1)List6-12、 List6-13 等参考にして、演習6ー7、 演習6-8、 演習6-9(133頁)を完成せよ。 プログラミング演習('03) 2017/3/21 前回の宿題 (1)List6-12、 List6-13 等参考にして、演習6ー7、 演習6-8、 演習6-9(133頁)を完成せよ。 (2)教科書114~133頁を良く読み直して復習し、次に、134~145頁を予習せよ。 ファイル名:hwB-****.c 締め切り: 7月8日(火) 午後5時(厳守) PE03-12.ppt
int min_of(const int vc[], int no) /*演習6-7*/ { int i, min = vc[0]; for ( i=1; i<no; i++) if ( vc[i]<min ) min = vc[i]; return ( min ); } void rev_intary( int vc[], int no) /*演習6-8*/ { int i, temp; for ( i = 0; i< no/2; i++) { temp = vc[no-i-1]; vc[no-i-1] = vc[i]; vc[i] = temp; } return; void intary_rcpy(int v1[],const int v2[],int no) { int i; /*演習6-9*/ for (i=0;i<no;i++) v1[i]=v2[no-i-1];
int main(void) { int i, v[10], v1[10], N=10; puts("整数を10個入力せよ"); for ( i=0; i<N; i++) { printf("v[%d]=>",i); scanf("%d", &v[i]); } printf("配列 v の要素中の最小値は %d です。\n", min_of(v,N) ); puts("配列 v を逆順にすると"); rev_intary(v,N); for ( i=0; i<N; i++) printf("v[%d]=%d\n",i,v[i]); puts("更に v を逆にして v1 に代入すると"); intary_rcpy(v1, v, N); printf("v[%d]=%d: v1[%d]=%d\n", i, v[i], i, v1[i]); return(0); }
宿題の提出について 配列の入れ替えなどを関数で実行せずに、mainの中で実行している。 mainの中で、関数の呼び出しが無い。 転送ファイルが無い、番号・氏名が無い、リストのプリントアウト提出が無い
今日の課題 ファイル名:enC-****.c (1)List6-20 を参考に、演習6-12 を完成せよ。 プログラミング演習('03) 今日の課題 2017/3/21 ファイル名:enC-****.c (1)List6-20 を参考に、演習6-12 を完成せよ。 (2)第10回の課題・宿題の続きとして、各科目の最高点・最低点、合計の最高点・最低点の出力を追加せよ。(最高点、最低点を求める関数を作る) 学籍番号 英語 数学 国語 合計点 平均点 1023 63 71 68 202 67.33 1026 49 28 51 128 42.67 : : : : 1132 81 89 75 245 81.67 平均点 67.3 62.1 72.1 201.5 67.17 最高点 96 89 92 265 88.33 最低点 44 23 46 113 37.67 提出はいつもと同様、リスト印刷とファイル転送 PE03-12.ppt
関数外で定義・宣言 関数内でstatic付き #include <stdio.h> /*演習6-12*/ int a[5]; int main(void){ static int b[5]; int i, c[5]; printf("\n a : "); for(i=0;i<5;i++) printf("%d",a[i]); printf("\n b : "); for(i=0;i<5;i++) printf("%d",b[i]); printf("\n c : "); for(i=0;i<5;i++) printf("%d",c[i]); printf("\n"); return (0); } 関数外で定義・宣言 関数内でstatic付き 0に初期化される 自動記憶域期間の変数は不定値
今日の宿題[提出不要] 以下のプログラムを実行させ、関連する説明を復習せよ。(134-145頁) プログラミング演習('03) 2017/3/21 今日の宿題[提出不要] 以下のプログラムを実行させ、関連する説明を復習せよ。(134-145頁) (1)List6-14(134頁)[逐次探索] (2)List6-15,16(136頁-)[番兵法] (3)List6-17(138頁)[多次元配列] (4)List6-18(140頁)[有効範囲] (5)List6-19(143頁)[記憶域期間] PE03-12.ppt
次回(第13回)の プログラミング入門、 プログラミング演習は プログラミング演習('03) 2017/3/21 次回は最終回です。 第12回終了 次回(第13回)の プログラミング入門、 プログラミング演習は 7月17日です。 PE03-12.ppt