第 11 回応用プログラミング復習用演習課題 2014/12/3 課題 1:関数

第 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
;
//最小値を返す.