第1回授業(4月21日 1時間目)
- 科目オリエンテーション
- シラバス説明
- 授業内容紹介
- 評価方法
- 授業に臨む心得など
さっそく課題
C++には関数テンプレートという優れた機能があります。(arrayとかvecotrとかもその応用)
その便利さを実感するためにまず、以下のようなプログラムを作成しなさい。
まずは復習!!
- char型のデータを引数で2つ受け取り、大きいほうを返す関数を作りなさい。
- int型のデータを引数で2つ受け取り、大きいほうを返す関数を作りなさい。
- float型のデータを引数で2つ受け取り、大きいほうを返す関数を作りなさい。
- double型のデータを引数で2つ受け取り、大きいほうを返す関数を作りなさい。
- これらをオーバーロードを使って作成しなさい。
お次は配列いじりの復習
- char型のデータの配列(arrayでもvectorでも、普通の配列でも構わん)を、引数にとり(どうやって引数に指定するかは工夫して!)、引数で渡した配列自体をソートしちゃう関数を作りなさい。
- char型のデータの配列(arrayでもvectorでも、普通の配列でも構わん)を、引数にとり(どうやって引数に指定するかは工夫して!)、引数で渡した配列自体をソートしちゃう関数を作りなさい。
- char型のデータの配列(arrayでもvectorでも、普通の配列でも構わん)を、引数にとり(どうやって引数に指定するかは工夫して!)、引数で渡した配列自体をソートしちゃう関数を作りなさい。
- char型のデータの配列(arrayでもvectorでも、普通の配列でも構わん)を、引数にとり(どうやって引数に指定するかは工夫して!)、引数で渡した配列自体をソートしちゃう関数を作りなさい。
- これらをオーバーロードを使って作成しなさい。
データはこれで作ってね!
#include <iostream> // cout #include <algorithm> using namespace std; int main() { std::srand( time(NULL) ); int arr[10]; for(int i=0; i<10; i++) { arr[i] = i + 1; cout << arr[i] << " "; } cout <<endl; //cout << "RAND_MAX=" << RAND_MAX << endl; int rnd1,rnd2; for(int i=0; i<30; i++) { rnd1 = rand()%10; rnd2 = rand()%10; std::swap(arr[rnd1], arr[rnd2]); } for(int i=0; i<10; i++) { cout << arr[i] << " "; } cout <<endl; return 0; }
お次は新しいこと!
関数テンプレートについて調べなさい。
調べたら、うえで作った大きいほうを返す関数を、テンプレートを使って作ってみよう!
こんな感じで使える$MaxValue$関数を作成出来たらOK
- "main.cpp"
int main() { int x = 10, y = 30, z; double x1 = 15.1, y1 = 10.1, z1; z = MaxValue<int>(x, y); z1 = MaxValue<double>(x1, y1); cout << z << endl; cout << z1 << endl; return 0; }
お次は、同じように、ソート関数に関して、テンプレートを適用してみよう!
最後の問題です。
テンプレートとオーバーロードの違いをまとめなさい!
後で提出してもらいます。