オブジェクト指向言語・ オブジェクト指向言語演習 中間試験回答例. Jan. 12, 2005 情報処理技術基礎演習 II 2 オブジェクト指向言語 中間試験解説 1  (1) 円柱の体積(円柱の体積 = 底面の円の面積 x 高さ) を求めるプログラムを作成しなさい。ただし、出力結果は、入 力した底面の円の半径.

Slides:



Advertisements
Similar presentations
1 例題 ex3b ( 配列 ) 科学科プログラミング. 2 例題 : ex3b  以下の 3 つについて例題を進める ステップ 1 :配列 ステップ 2 :最小と最大 ステップ 3 :文字型の配列.
Advertisements

プログラムのパタン演習 解説.
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
情報処理演習C2 ファイル操作について (2).
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第2章 数値の入力と変数 scanfと変数をやります.
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
基礎プログラミングおよび演習 第9回
文字配列の課題1 解説 /* a */ #include <stdio.h> main( ) { int i;
プログラミング演習(2組) 第12回
第13回 プログラミングⅡ 第13回
12: コマンドライン引数 C プログラミング入門 総機1 (月1) Linux にログインし、以下の講義ページ を開いておくこと
C言語講座 第4回 ポインタ.
12: コマンドライン引数 C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページ を開いておくこと
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
第6章 2重ループ&配列 2重ループと配列をやります.
プログラミング論 II 電卓,逆ポーランド記法電卓
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
第7回 条件による繰り返し.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング2 関数
Cプログラミング演習 第6回 ファイル処理と配列.
プログラミング論 ファイル入出力
関数の定義.
プログラミング応用 printfと変数.
第10回関数 Ⅱ (ローカル変数とスコープ).
プログラミング論 II 2008年10月30日 文字列
プログラミング演習I 2003年6月25日(第10回) 木村巌.
今までの練習問題の復習.
前回の練習問題.
第7回 条件による繰り返し.
第7回 プログラミングⅡ 第7回
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
プログラミング論 ファイル入出力
プログラミング基礎B 文字列の扱い.
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
配列変数とポインタ 静的確保と動的確保 ポインタ配列 2次元配列 時間計測 第1回レポートの課題
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
プログラミング基礎a 第6回 C言語によるプログラミング入門 配列と文字列(その2)
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
12: コマンドライン引数 C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページを開いておく こと
標準入出力、変数、演算子、エスケープシーケンス
知能情報工学演習I 第8回(後半第2回) 課題の回答
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
モジュール分割.
プログラミング 4 文字列.
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
第3回簡単なデータの入出力.
情報処理Ⅱ 2005年11月25日(金).
プログラミング入門2 第5回 配列 変数宣言、初期化について
情報処理Ⅱ 小テスト 2005年2月1日(火).
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
第2章 数値の入力と変数 scanfと変数をやります.
知能情報工学演習I 第9回(後半第3回) 課題の回答
計算技術研究会 第5回 C言語勉強会 関数(function)を使う
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
12: コマンドライン引数 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
Presentation transcript:

オブジェクト指向言語・ オブジェクト指向言語演習 中間試験回答例

Jan. 12, 2005 情報処理技術基礎演習 II 2 オブジェクト指向言語 中間試験解説 1  (1) 円柱の体積(円柱の体積 = 底面の円の面積 x 高さ) を求めるプログラムを作成しなさい。ただし、出力結果は、入 力した底面の円の半径 ( Radius ) に対して、高さ 2.0, 4.0, 6.0, 8.0, 10.0 のときの体積を、以下に示す実行結果と同じ 形式(空白や小数点以下の桁数など)で表示するようにするこ と。また、円周率は 3.14 として計算しなさい。(ただし、青 字の部分は入力文字列を表す。)  $./oom-1 Input Radius (float):

Jan. 12, 2005 情報処理技術基礎演習 II 3 オブジェクト指向言語 中間試験解説 1  半径を入力する変数を radius, 円の面積を計算した結果を代入 する変数を circle として実数型で宣言する。  決められた回数の繰り返しなので、 for 文を使う。 2,4,6,8,10 は 1*2, 2*2,3*2,4*2,5*2 と同じ。 #include int main( void ){ float radius, circle; int i; printf("Input Radius (float) :"); scanf("%f",&radius); circle = radius * radius * 3.14; for (i = 1; i <= 5; i++){ printf("%.1f - %.2f\n",(float)i*2., circle*(float)i*2.); } return 0; }

Jan. 12, 2005 情報処理技術基礎演習 II 4 オブジェクト指向言語 中間試験解説 1  printf の中で使われる % と変換文字の間に許されるもの マイナス符号  変換された文字を左づめで表示 フィールドの最小幅を指定する数字  上記マイナス符号が無ければ、変換された文字を右づめで、最小 幅を保ちつつ表示。ただし、最小であるので範囲を超える場合は そのまま表示する。 ピリオド  フィールドの幅を示す数字と桁数を指定する数字の区切り 例  %-20s20 文字幅の文字列を左づめで出力  %15.3f15 文字幅の実数を小数点以下3桁  この15文字幅を省略して自動の文字幅小数点以下 3 桁とす ると、  %.3f 自動文字幅、小数点以下 3 桁 printf("%.1f - %.2f\n",(float)i*2., circle*(float)i*2.);

Jan. 12, 2005 情報処理技術基礎演習 II 5 オブジェクト指向言語 中間試験解説 2  (2) 整数型の引数1と引数2が与えられたとき、大きい方を 引数1に、小さい方を引数2に入れて戻る関数 MaxMin を作 成しなさい。なお、 main 関数としては以下を使用し ( 変更不 可 ) 、プログラムは main 関数も含めて動作するものを提出す ること。  題意から、関数 MaxMin は 2 つの引数をとることがわかる。ま た、与えられた main 関数のプロトタイプ宣言から、それらは ポインタであることもわかる。  また、戻り値が無いので関数は void 型となる。 void MaxMin(int *, int *);  main 関数から呼び出すときにポインタを渡すため、 MaxMin( &in1, &in2 ); としている。

Jan. 12, 2005 情報処理技術基礎演習 II 6 オブジェクト指向言語 中間試験解説 2  仮引数として x, y を用意する。受け渡しはポインタなので、 そのよう記述する。  *x はxの指し示すポインタの内容である。  *x < *y ならば入れ替え、そうでなければそのまま。  仮の変数を tmp としてそこに入れて交換する。 void MaxMin(int *x, int *y){ int tmp; if ( *x < *y ) { tmp = *x; *x = *y; *y = tmp; } return ; }

Jan. 12, 2005 情報処理技術基礎演習 II 7 オブジェクト指向言語 中間試験解説 3 (3) 引数の1番目で示されるファイルを開き、母音 ( aiueo ) の数 を数えるプログラムを作成しなさい。ただし、1行の母音の数を数 える関数 str_cout_v を作成し、それを利用しなさい。結果は以下 に示すとおりである。(ただし、青字の部分は 入力文字列を表 す。)  課題で str_count_n を作成した。このときは、文字が ’ 0 ’ 以上かつ ’ 9 ’ 以下のときに文字数を数えるにしていた。 if (*str >=‘0’ && *str <= ‘9’) { cnt++; }  今回は、 aiueo のどれか (a または i または u または e または o) であるの で、 if (*str == ‘a’ || *str == ‘i’ || *str == ‘u’ || *str == ‘e’ || *str == ‘o’ || *str == ‘A’ || *str == ‘I’ || *str == ‘U’ || *str == ‘E’ || *str == ‘O’ ) { cnt++; }

Jan. 12, 2005 情報処理技術基礎演習 II 8 #include #define MAXLINE 1024 int str_count_v(char *); int main( int argc, char *argv[] ) { char line[MAXLINE], ch; int i, cnt=0; FILE *fp; オブジェクト指向言語 中間試験解説 3  ヘッダファイルの読み込み。  今回使用する関数 str_cnt_v のプロトタイプ宣言 引数が文字列であることがわかる。  コマンドラインからデータを取得するため、 main の引数に argc と argv を用いる。  1 行を読み込むための文字配列として line を用意する。大きさは MAXLINE とする。  ファイルを使用するため、ファイル型のポインタ fp を宣言する

Jan. 12, 2005 情報処理技術基礎演習 II 9  コマンドラインの引数の数は argc に入っているので、これが 1 以下の場合はエラーを返す。  fopen を利用して 1 番目の引数のファイルをオープンし、これ のポインタをfpに代入する。  fopen に失敗した場合は NULL が帰ってくるのでそのエラー処 理を行う。 if (argc <= 1) { printf("Error in arguments\n"); exit (EXIT_FAILURE); } if ((fp = fopen(argv[1],"r")) == NULL) { printf("Error: open file %s\n",argv[1]); exit (EXIT_FAILURE); } オブジェクト指向言語 中間試験解説 3

Jan. 12, 2005 情報処理技術基礎演習 II 10 オブジェクト指向言語 中間試験解説 3  fgets を利用して 1 行を文字配列 line に読み込む。  fgets が NULL を返したらファイルの終端に達したことになる ので、それで while のループを抜ける。 while ( fgets(line, MAXLINE, fp)){ cnt += str_count_v(line); } printf("The number of vocal in file %s is %d.\n“, argv[1], cnt); return 0; }

Jan. 12, 2005 情報処理技術基礎演習 II 11 オブジェクト指向言語 中間試験解説 3  cnt は最初 0 で初期化しておく。  文字列の最後まで str を増やしながら while 文で進める。  条件が成立したときに cnt を 1 増やす。  戻り値は cnt となる。 int str_count_v(char *str){ int cnt = 0; while (*str != '\0'){ if(*str == 'a' || *str == 'i' || *str == 'u' || *str == ‘e’ || *str == ‘o‘ || *str == ’A’ || *str == ‘I’ || *str == ‘U’ || *str == ‘E’ || *str == 'O') cnt++; str++; } return cnt; }