第13回目 [7月13日、H.16(‘04)] 総合演習 本日のメニュー 1)前回の課題について 2)総合演習課題 3)過去の試験問題 4)試験について 最終回 PE04-13.ppt 前回の課題 (1)List6-12、List6-13等参考にして、演習6-7、演 習6-8、演習6-9(133頁)を完成せよ。 (1) → ファイル名:enC-****.c で提出 (2)List6-20 を参考に、演習6-12 を完成せよ。 (2) → 授業の最後に答え合わせをする (3)以下のプログラムを実行させ、関連する説明を 復習せよ。(134-145頁) (a)List6-14(134頁)[逐次探索] (b)List6-15,16(136頁-)[番兵法] (c)List6-17(138頁)[多次元配列] (d)List6-18(140頁)[有効範囲] (e)List6-19(143頁)[記憶域期間] 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; vc[4-i], for ( i = 0; i< no/2; i++) { for(i=0;i<4・・・ 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]; return; } 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); for ( i=0; i<N; i++) printf("v[%d]=%d: v1[%d]=%d\n", i, v[i], i, v1[i]); return(0); } 課題の提出について ・配列の入れ替えなどを関数で実行せずに、main の中で実行している。 → 関数を作って利用する。 ・mainの中で、関数の呼び出しが無い。 ・関数の中で入出力の処理をしている。 ・関数の中に具体的な値(マジックナンバー)がは いっている。 → 引数で情報の受け渡しをする ・転送ファイルが無い,番号・氏名が無い,セミコロ ンが無い,constの綴りミス ・void型関数をprintfの中に記述している。 → void型関数の呼び出し方を復習すること。 ・ソースリストに余分な文字が入っている。 前回の宿題 ファイル名:hwC-****.c 第10回の課題・宿題の続きとして、各科目の最高 点・最低点、合計の最高点・最低点の出力を追加せ よ。(最高点、最低点を求める関数を作る) 学籍番号 1023 1026 : 1132 平均点 最高点 最低点 英語 数学 国語 合計点 平均点 63 71 68 202 67.33 49 28 51 128 42.67 : : : 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時(厳守) #include <stdio.h> int maxk(int x[][5], int no, int k) { int i; int max = x[0][k]; const int x[][5] 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) { ・・・・・・ 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); 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); 宿題の提出について ・関数が作られていない。 ・配列の要素数を引数として与えていない。 → 汎用性が無くなる。 ・大域変数を利用している。 → 汎用性が無くなる。 ・関数の中に出力の部分を入れている。 → 汎用性が無くなる。 ・要素数が1の場合は1次元配列でよい。 → int a[1][5] ならば a[5] でよい。 総合演習課題(1) 【1】(1)ある商品の定価と消費税率を入力 し、税込みの値段を出力するプログラムを 作成せよ。ただし、消費税率は%の単位で 入力し、一円未満の金額は切り捨てにして、 円の単位で出力するものとする。 定価(円) => 1590 定価(円) => 2315 消費税率(%)=> 4 消費税率(%)=> 7 税込価格は 1653 円です。 税込価格は 2477 円です。 総合演習課題(2) 【1】(2)ある商品の定価と割引率を入力し、 実際の売値を出力するプログラムを作成せ よ。ただし、割引率は%の単位で入力し、 一円未満の金額は切り捨てにして、円の単 位で出力するものとする。 出力は、【1】(1)に続いて行え。 定価(円) => 1890 割引率(%)=> 7 売値は 1757 円です。 定価(円) => 3563 割引率(%)=> 15 売値は 3028 円です。 総合演習課題(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)の出力 ・・・・・ 総合演習課題(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 ・・・・・ (以下、入力個数に応じて 出力していく) 今回の宿題(最後の宿題) ◎今日の課題の完成 (提出不要) ◎総復習と試験勉強 以下の頁にある 過去問の勉強 試験について 範囲:第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桁の整数:6084 4 6 8 10 12 合計は 18 で 3 の倍数です 14 16 18 二つの整数を入力せよ 合計は 整数A:7 18 22 26 10 12 整数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が入力されたらプログラムを終了するように せよ。 [例] 最小幅:5 高 さ:6 ***** ******* ********* *********** ************* *************** 最小幅:0 最小幅:8 高 さ:2 ******** ********** 最小幅:1 高 さ:4 * *** ***** ******* 最小幅: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 です。 平成12年度の出題形式 (注意) 以下の注意が守られない場合、解答は採点 されない。 *解答プログラムは【1】が t1-****.c、【2】が t2-****.c というファイル名とし、コンパイル 後の実行形式ファイル t2-****.exe、t2****.exe と共に試験終了直後に aucoy に よりファイル転送する。ただし、**** は、授 業中に指定した番号とする。また、実行形 式ファイルが作成できなかった場合は、cpp ファイルのみの転送をする。ファイル転送 が無い場合には未提出となる。 平成12年度の出題形式 *プログラムの印刷提出はしなくて良い。 *プログラムの最上行に学籍番号・氏名を 記した注釈行をいれること。 *プログラムの中に学籍番号・氏名を画面 出力する printf を記述すること。 *この用紙は試験終了後に学籍番号・氏名 を記入して提出すること。 *試験には教科書などを持ち込んでも良い が、携帯電話や話など、周囲の人との情 報交換は不可とする。 【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回目終了 次回は試験となります。 短い間でしたが、 よくがんばりました。
© Copyright 2025 ExpyDoc