第 11 回応用プログラミング復習用演習課題 2014/12/3 課題 1:関数宣言とデフォルト引数 以下は,整数 2 数及び整数 3 数の加算を行う関数 sum と,整数 2 数及び 3 数の乗算を行う関数 multi を関数宣言をし,関数定義を行ったプログラムである.空欄に適切なコードを記述せよ. #include<iostream> using namespace std; //sumの関数宣言 //multiの関数宣言 int main(void){ cout << sum(2, 3) << endl; cout << sum(2, 3, 4) << endl; cout << multi(2, 3) << endl; cout << multi(2, 3, 4) << endl; return 0; } int sum(int x, int y, int z){ return x+y+z; } int multi(int x, int y, int z){ return x*y*z; } 実行例(下線部はキーボードからの入力) % ex1 5 9 6 24 課題 2:多重定義 以下は,配列からある数 x を探し出し, 存在していれば true,存在していなければ false を返す, search 関数を int 型,double 型で作成したプログラムである.空欄に適切なコードを記述せよ. #include<iostream> #include<cmath> using namespace std; //int型searchの関数宣言 //double型searchの関数宣言 int main(void){ const int size = 10; int a[size] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; double b[size] = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 0}; cout << boolalpha << search(a, 7, size) << endl; cout << boolalpha << search(b, 4.5, size) << endl; return 0; } bool search(int a[], int x, int sz){ for(int i=0; i<sz; i++){ if( ) return true; } return false; } bool search(double b[], double x, int sz){ const double eps = 1.0e-2; for(int i=0; i<sz; i++){ if( ) return true; } return false; } 実行例(下線部はキーボードからの入力) % ex2 true false //int型searchの関数定義 //double型searchの関数定義 課題 3:テンプレート関数とテンプレート関数の関数宣言 以下は,int 型,double 型の両方に対応した,myMax 関数(受け取った配列の中の最大値を返す) をテンプレート関数を用いて作成したプログラムである.空欄に適切なコードを記述せよ. #include<iostream> using namespace std; //template関数宣言,変数の型はtemplateの部分をTypeとして宣言. //template宣言 myMax( [ ], ); //関数宣言 int main(void){ const int size = 10; int a[size] = {6, -2, -9, 7, 3, 4, 1, -8, 0, 3}; double b[size] = {-1.2, 3.1, 2.4, 5.7, 8.1, -3.3, 2.5, 5.4, 0, 1.5}; cout << Max. in array a = << myMax(a, size) << endl; cout << Max. in array b = << myMax(b, size) << endl; return 0; } //template宣言. myMax( array[]; = array[0]; for(int i = 1; i<sz; i++){ if(max < array[i]){ max = array[i]; } } return max; } 実行例(下線部はキーボードからの入力) % ex3 Max. in array a = 7 Max. in array b = 8.1 sz){ //変数maxに基準を設定. 課題 4:ライブラリのテンプレート関数の利用 以下は,algorithm ヘッダファイルに作成されている,テンプレート関数の max 関数と min 関数を 利用して,int 型,double 型の両方に対応した,3 数の最大値と 3 数の最小値を求める関数を作成 したプログラムである.空欄に適切なコードを記述せよ. なお,algorithm に用意されている max 関数と min 関数は 2 数の最大値,最小値を返す. ・ template<class T> const T& max(const T& x, const T& y):x と y の大きい方を返す. ・ template<class T> const T& min(const T& x, const T& y):x と y の小さい方を返す. #include<iostream> //algorithmヘッダをインクルード using namespace std; //template宣言 Type myMax(Type, Type, Type); //template宣言 Type myMin(Type, Type, Type); int main(void){ cout << myMax(3, 1, 2) << endl; cout << myMin(1.4, 3.1, 0.9) << endl; return 0; } //template宣言 Type myMax(Type x, Type y, Type z){ return } ; //最大値を返す. //template宣言 Type myMin(Type x, Type y, Type z){ return } 実行例(下線部はキーボードからの入力) % ex4 3 0.9 ; //最小値を返す.
© Copyright 2024 ExpyDoc