最終回 総合演習 第13回目 [7月13日、H.16(‘04)] 本日のメニュー 1)前回の課題について 2)総合演習課題 プログラミング演習('04) 2018/11/15 第13回目 [7月13日、H.16(‘04)] 総合演習 本日のメニュー 1)前回の課題について 2)総合演習課題 3)過去の試験問題 4)試験について 最終回 PE04-13.ppt PE04-13.ppt
(1) → ファイル名:enC-****.c で提出 プログラミング演習('04) 前回の課題 2018/11/15 (1)List6-12、List6-13等参考にして、演習6-7、演習6-8、演習6-9(133頁)を完成せよ。 (2)List6-20 を参考に、演習6-12 を完成せよ。 (3)以下のプログラムを実行させ、関連する説明を復習せよ。(134-145頁) (a)List6-14(134頁)[逐次探索] (b)List6-15,16(136頁-)[番兵法] (c)List6-17(138頁)[多次元配列] (d)List6-18(140頁)[有効範囲] (e)List6-19(143頁)[記憶域期間] (1) → ファイル名:enC-****.c で提出 (2) → 授業の最後に答え合わせをする PE04-13.ppt
vc[4-i], for(i=0;i<4・・・ など,具体的な値 (マジックナンバー)が入っている 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]; vc[4-i], for(i=0;i<4・・・ など,具体的な値 (マジックナンバー)が入っている
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の中で実行している。 → 関数を作って利用する。 ・関数の中で入出力の処理をしている。 ・関数の中に具体的な値(マジックナンバー)がはいっている。 → 引数で情報の受け渡しをする ・転送ファイルが無い,番号・氏名が無い,セミコロンが無い,constの綴りミス ・void型関数をprintfの中に記述している。 → void型関数の呼び出し方を復習すること。 ・ソースリストに余分な文字が入っている。
前回の宿題 ファイル名:hwC-****.c プログラミング演習('04) 前回の宿題 2018/11/15 ファイル名:hwC-****.c 第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 提出はいつもと同様、リスト印刷とファイル転送 締め切り: 7月10日(土) 午後1時(厳守) PE04-13.ppt
const int x[][5] #include <stdio.h> プログラミング演習('04) 2018/11/15 #include <stdio.h> int maxk(int x[][5], int no, int k) { int i; int max = x[0][k]; for ( i=1; i<no-1; i++) if ( x[i][k] > max ) max = x[i][k]; return ( max ); } int mink(int x[][5], int no, int k) { int i; int min = x[0][k]; for ( i=1; i<no-1; i++) if ( x[i][k] < min ) min = x[i][k]; return ( min ); } int main(void) { ・・・・・・ const int x[][5] PE04-13.ppt
for ( j=1; j<=4; j++) printf("%6d", maxk( a, 11, j) ); プログラミング演習('04) 2018/11/15 int main(void) { int a[11][5]={{ 1023, 63, 71, 68, 0}, { 1026, 49, 28, 51, 0}, ・・・・ { 1132, 81, 89, 75, 0}, { 0, 0, 0, 0, 0} }; ・・・・ /*最高点と最低点の出力*/ printf("最高点"); for ( j=1; j<=4; j++) printf("%6d", maxk( a, 11, j) ); printf("%9.2f\n", maxk( a, 11, 4)/3.0); printf("最低点"); for ( j=1; j<=4; j++) printf("%6d", mink( a, 11, j) ); printf("%9.2f\n", mink( a, 11, 4)/3.0); PE04-13.ppt
for ( j=1; j<=4; j++) printf("%6d", maxk( a, 11, j) ); プログラミング演習('04) 2018/11/15 int maxk(int x[][5], int no, int k) { int i; int max = x[0][k]; for ( i=1; i<no-1; i++) if ( x[i][k]>max ) max=x[i][k]; return ( max ); } /*最高点と最低点の出力*/ printf("最高点"); for ( j=1; j<=4; j++) printf("%6d", maxk( a, 11, j) ); printf("%9.2f\n",maxk(a,11,4)/3.0); PE04-13.ppt
宿題の提出について ・関数が作られていない。 ・配列の要素数を引数として与えていない。 → 汎用性が無くなる。 ・大域変数を利用している。 → 汎用性が無くなる。 ・関数の中に出力の部分を入れている。 → 汎用性が無くなる。 ・要素数が1の場合は1次元配列でよい。 → int a[1][5] ならば a[5] でよい。
プログラミング演習('04) 2018/11/15 総合演習課題(1) 【1】(1)ある商品の定価と消費税率を入力し、税込みの値段を出力するプログラムを作成せよ。ただし、消費税率は%の単位で入力し、一円未満の金額は切り捨てにして、円の単位で出力するものとする。 定価(円) => 1590 消費税率(%)=> 4 税込価格は 1653 円です。 定価(円) => 2315 消費税率(%)=> 7 税込価格は 2477 円です。 PE04-13.ppt
プログラミング演習('04) 2018/11/15 総合演習課題(2) 【1】(2)ある商品の定価と割引率を入力し、実際の売値を出力するプログラムを作成せよ。ただし、割引率は%の単位で入力し、一円未満の金額は切り捨てにして、円の単位で出力するものとする。 出力は、【1】(1)に続いて行え。 定価(円) => 1890 割引率(%)=> 7 売値は 1757 円です。 定価(円) => 3563 割引率(%)=> 15 売値は 3028 円です。 PE04-13.ppt
総合演習課題(3) 【2】次の(1),(2)の順にプログラムを完成させよ。 出力は【1】(1)(2)に続いて行え。 プログラミング演習('04) 2018/11/15 総合演習課題(3) 【2】次の(1),(2)の順にプログラムを完成させよ。 出力は【1】(1)(2)に続いて行え。 (1)10個以上のデータを配列に入力し、1行に6個づつの形式で複数行にわたって出力せよ。ただし、データは2桁の正または負の整数で、個数は100個以下、入力の最後には -999を入力するものとする。 データを入力 20 15 -12 -11 9 5 8 –37 -3 5 25 –9 –89 0 7 -999 (1)の出力 20 15 -12 –11 9 5 8 -37 -3 5 25 -9 -89 0 7 (2)の出力 ・・・・・ PE04-13.ppt
総合演習課題(4) (2) (1)で出力した各行について、それらの平均値を小数点以下2桁まで求め(1)の出力に続いて例のように出力せよ。 プログラミング演習('04) 2018/11/15 総合演習課題(4) (2) (1)で出力した各行について、それらの平均値を小数点以下2桁まで求め(1)の出力に続いて例のように出力せよ。 (1)の出力 20 15 -12 –11 9 5 8 -37 -3 5 25 -9 -89 0 7 (2)の出力 1 行目の平均値= 4.33 2 行目の平均値= -1.83 3 行目の平均値= -27.33 ・・・・・ (以下、入力個数に応じて 出力していく) PE04-13.ppt
◎総復習と試験勉強 以下の頁にある 過去問の勉強 プログラミング演習('04) 2018/11/15 今回の宿題(最後の宿題) ◎今日の課題の完成 (提出不要) ◎総復習と試験勉強 以下の頁にある 過去問の勉強 PE04-13.ppt
試験について 範囲:第1章から第6章(pp.1-145) 追加で pp.176-177,200-201 及び pptファイルで扱った内容 [基本的に『プログラミング入門』と同じ] 日時:7月20日(火曜日)の4時限目 14:30 – 15:30 場所:パソコン教室1 条件:これまでのpptファイル、森下印のある提出プログラムリスト(コピー不可) 日時場所は掲示で 再確認すること
平成15年度の出題形式 (注意) 以下の注意が守られない場合、解答は採点されない。 *解答プログラムは【1】が t1-****.c、【2】が t2-****.c というファイル名とし、コンパイル後の実行形式ファイル t1-****.exe、t2-****.exe と共に試験終了直後に aucoy によりファイル転送する。ただし、**** は、授業中に指定した番号とする。また、実行形式ファイルが作成できなかった場合は、.c ファイルのみを転送する。ファイル転送が無い場合には未提出となる。試験時に貸与したFDは保存したファイルを消さずに返却すること。
平成15年度の出題形式 (注意)[つづき] *プログラムの中に学籍番号・氏名を画面に出力する為の文を記述すること。 *この用紙は試験終了後に学籍番号・氏名・貸与FD番号を記入して提出すること。 *試験には、パワーポイントのファイルを印刷したもの(自筆の加筆可)、課題・宿題の返却リスト(森下の日付印のあるもの)は持ち込んでも良い。その他(教科書など)は不可
【1】次の(1)~(3)を順に実行していくプログラムを作成せよ。 (1)キーボードから4桁の整数を入力し、各桁の値の合計を表示し、その後で、その値が3の倍数ならば「3 の倍数です」、そうでないならば「3 の倍数ではない」と[例]に倣って表示せよ。 (2)次に、キーボードから二つの整数を入力し、小さい方の値から大きい方の値までに存在する全ての偶数を1行に5個づつ、[例]に倣って、縦に数値がきれいに並ぶように出力せよ。 (3)最後に、要素の数が5個の配列を初期値0で定義し、(2)で出力した値について、縦に並んだ値の合計を[例]に倣って表示せよ。
[例] 4桁の整数:3584 合計は 20 で 3 の倍数ではない 二つの整数を入力せよ 整数A:19 整数B:4 4 6 8 10 12 4 6 8 10 12 14 16 18 合計は 18 22 26 10 12 4桁の整数:6084 合計は 18 で 3 の倍数です 二つの整数を入力せよ 整数A:7 整数B:32 8 10 12 14 16 18 20 22 24 26 28 30 32 合計は 54 60 66 38 42
【2】二つの整数を引数とし、第1引数を最小幅、 第2引数を高さとする例に示すような台形を* を用いて表示する関数daikeiを作成し、それを 呼び出すmain関数も含めてプログラム全体を 作成せよ。ただし、main関数では、最小幅と高 さを入力し、関数daikeiを呼び出した後、再び 最小幅と高さを入力できるようにし、最小幅に 0が入力されたらプログラムを終了するように せよ。
[例] 最小幅:8 高 さ:2 ******** ********** 最小幅:1 高 さ:4 * *** ***** ******* 最小幅:0 最小幅:5 高 さ:6 ***** ******* ********* *********** ************* *************** 最小幅:0
平成14年度の出題形式 (注意) 以下の注意が守られない場合、解答は採点されない。 *解答プログラムは【1】が t1-****.c、【2】が t2-****.c というファイル名とし、コンパイル後の実行形式ファイル t1-****.exe、t2-****.exe と共に試験終了直後に aucoy によりファイル転送する。ただし、**** は、授業中に指定した番号とする。また、実行形式ファイルが作成できなかった場合は、.c ファイルのみの転送をする。ファイル転送が無い場合には未提出となる。また、試験時に貸与したFDに保存したファイルは消さずに返却すること。
平成14年度の出題形式 (注意)[続き] *プログラムの最上行に学籍番号・氏名を記した注釈行をいれること。 *プログラムの中に学籍番号・氏名を画面に出力する為の文を記述すること。 *この用紙は試験終了後に学籍番号・氏名・貸与FD番号を記入して提出すること。 *試験には、パワーポイントのファイルを印刷したもの(自筆の加筆可)、課題・宿題の返却リスト(森下の日付印のあるもの)は持ち込んでも良い。その他(教科書など)は不可
【1】次の(1)から(3)を順に実行していくプログラムを作成せよ。 (1)キーボードから3つの整数を変数 a, b, c に入力し、a+b-c の値を整数で、その値を3で割った値を小数点以下2桁まで表示せよ。 (2)得点を正の整数値として読込、その値に応じた評価を表示せよ。なお、評価は70点未満が『不可』、70点~79点は『可』、80点~89点は『良』、90点以上は『優』とする。 (3)整数値を読み込み、その数が 6 で割り切れるかどうかを表示せよ。ただし、表示後に、もう一度続けるかどうかの確認を促し、それに応じて何度でも繰り返せるようにすること。例えば、0以外が入力されたら繰り返して入力できるようにし、0 が入力されたら終了するようにする。
【2】次の5つの整数値:10,20,30,40,50で初期化した配列を用意し、キーボードから入力した整数値を各要素に加え、その結果の値を順に表示せよ。続いて、配列の各要素の合計と平均値を表示し、最後に、各要素を平均値で割った値について表示せよ。例えば 8 を入力した場合の表示例を以下に示す。この例にならって表示せよ。平均値と最後の行の出力は小数点以下2桁とせよ。 8 を加えた結果は 18 28 38 48 58 です。 合計は 190、平均値は 38.00 です。 各要素を平均値で割ると 0.47, 0.74 1.00 1.26 1.53 です。
平成13年度の出題形式 (注意) 以下の注意が守られない場合、解答は採点されない。 *解答プログラムは【1】が t1-****.c、【2】が t2-****.c というファイル名とし、コンパイル後の実行形式ファイル t1-****.exe、t2-****.exe と共に試験終了直後に aucoy によりファイル転送する。ただし、**** は、授業中に指定した番号とする。また、実行形式ファイルが作成できなかった場合は、 .c ファイルのみの転送をする。ファイル転送が無い場合には未提出となる。また、試験時に貸与したFDに保存したファイルは消さずに返却すること。
平成13年度の出題形式 (注意)[続き] *プログラムの最上行に学籍番号・氏名を記した注釈行をいれること。 *プログラムの中に学籍番号・氏名を画面出力する printf文 を記述すること。 *この用紙は試験終了後に学籍番号・氏名・貸与FD番号を記入して提出すること。 *試験には、パワーポイントのファイルを印刷したもの(自筆の加筆可)、課題・宿題の返却リスト(森下の日付印のあるもの)は持ち込んでも良い。その他(教科書、携帯電話等)は不可
【1】次の(1)から(3)を順に実行していくプログラムを作成せよ。 (1)キーボードから2つの浮動小数点数を読み込み、その和、差、積、商を小数点以下2桁で表示する。(小数点以下3桁目の切り捨て、四捨五入等は問わない) (2)正の整数値を読み込み、その値を0までカウントダウンする様子を表示する。例えば、5が入力された場合、5 4 3 2 1 0 と出力する。 (3)整数を読み込み、その値の個数だけ、1234567 890の順に数字を繰り返して表示する。例えば、25が入力された場合、 1234567890123456789012345と出力する。ただし、負の整数又は0が入力された場合は、-999 と出力せよ。
【2】キーボードから正の整数を順に入力していき、その中の奇数のみを配列に格納し、その個数が6個になったら入力を受け付けず、その6個の整数の和と平均を求めよ。画面には、配列に格納された6個の数値を出力した後に、和と平均(小数点以下3桁まで)を出力せよ。 例えば、 3 4 9 2 5 6 1 2 3 7 と入力すると、最後の7を入力した時点で、例えば、以下のような形式で出力をする。 格納データは 3 9 5 1 3 7 です。 和は 28、 平均は 4.667 です。
以下の注意が守られない場合、解答は採点されない。 (注意) 以下の注意が守られない場合、解答は採点されない。 *解答プログラムは【1】が t1-****.c、【2】が t2-****.c というファイル名とし、コンパイル後の実行形式ファイル t2-****.exe、t2-****.exe と共に試験終了直後に aucoy によりファイル転送する。ただし、**** は、授業中に指定した番号とする。また、実行形式ファイルが作成できなかった場合は、cpp ファイルのみの転送をする。ファイル転送が無い場合には未提出となる。 平成12年度の出題形式
*プログラムの最上行に学籍番号・氏名を記した注釈行をいれること。 平成12年度の出題形式 *プログラムの印刷提出はしなくて良い。 *プログラムの最上行に学籍番号・氏名を記した注釈行をいれること。 *プログラムの中に学籍番号・氏名を画面出力する printf を記述すること。 *この用紙は試験終了後に学籍番号・氏名を記入して提出すること。 *試験には教科書などを持ち込んでも良いが、携帯電話や話など、周囲の人との情報交換は不可とする。
【1】円とドルの換算プログラムを作成せよ。初めに円を入力し、それをドルに変換せよ。次に、ドルを入力して円に変換せよ。ただし、1ドルは 107 【1】円とドルの換算プログラムを作成せよ。初めに円を入力し、それをドルに変換せよ。次に、ドルを入力して円に変換せよ。ただし、1ドルは 107.38 円とせよ。また、表示する値はすべて小数点以下第3位を切り捨てて、小数点以下二桁までの表示とせよ。 {例} 1580.00 円は、14.71 ドルです。 18.56 ドルは、1992.97 円です。
【2】通常郵便物の速達料金は、250gまでが270円、250gを越える1㎏までが370円、1㎏を越える4㎏までが630円となっている。キーボードから通常郵便物の重さをキログラムの単位で入力し、その速達料金を出力するプログラムを作成せよ。また、4㎏を越える場合には入力間違いのメッセージを出力するようにせよ。メッセージの内容は各自で考えること。例えば、郵便物の重さが0.75㎏ならば、速達料金370円と出力する。また、郵便物の重さが5.0㎏ならば、例えば、「重量オーバー」と出力する。
【3】次の(1),(2)の順にプログラムを完成させよ。 (1)キーボードから二桁以下の正の整数を配列に入力し、その中から偶数のみを1行に4個づつの形式で複数行にわたって出力せよ。ただし、入力するデータの個数は99個以下とし、入力するデータの最後には -999 を入力するものとする(ただし、この -999 はデータには含めない)。 (2)(1)で出力した数値の個数、それらの合計及び平均値を出力せよ。ただし、平均値は小数点以下3桁目を切り捨てて、小数点以下2桁まで出力せよ。さらに、各値と平均値との差を二乗した値の合計及び平均値も同様に出力せよ。なお、出力は各自が最適と思う形式で行え。
第13回目終了 次回は試験となります。 短い間でしたが、 よくがんばりました。 プログラミング演習('04) 2018/11/15 PE04-13.ppt