/*--------------------------------------------------------------->
独習C++
練習問題1.7.3 :P35
引数として受け取った2つの数値のうち、
小さいほうを返すmin()という名前の関数を作成しなさい。
min()関数をオーバーロードし、
それぞれ、文字、整数、倍数精度浮動小数点を引数として受け取るようにしなさい
----------------------------------------------------------------->*/
#include<iostream>
using namespace std;
double min( double num1 , double num2 ){ return ( ( num1 > num2 ) ? num1 : num2 );}
int min( int num1 , int num2 ){ return( (int )min((double)num1,(double)num2));}
char min( char num1 , char num2 ){ return( (char)min((int)num1, (int) num2));}
int main(){
int i1,i2;
double d1,d2;
char c1,c2;
i1 = 1;
i2 = 2;
d1 = 1.1;
d2 = 1.2;
c1 = 'a';
c2 = 'b';
cout << "case:int\t(" << i1 << "\t:\t" << i2 << "\t)min:" << min( i1 ,i2 );
cout << "\ncase:double\t(" << d1 << "\t:\t" << d2 << "\t)min:" << min( d1 ,d2 );
cout << "\ncase:char\t(" << c1 << "\t:\t" << c2 << "\t)min:" << min( c1 ,c2 );
getchar();
return 0;
}