close
  1. Write a program that uses a function template called min to determine the smaller of two

arguments. Test the program using integer, character and floating-point number arguments.

題目要求一個比小的機制,輸入數值或字元,然後輸出較小的那個數字。特殊要求是要用 function template來做。一樣是呼叫引用的練習。話說不知道中文字有沒有辦法比小啊?顆顆顆...

 

 

Output should look as follows:

 

Input two integer values: 7 54

The smaller integer value is: 7

Input two characters: x e

The smaller character value is: e

Input two double values: 8.46 4.35

The smaller double value is: 4.3

 

 

 


#include <iostream>
using namespace std;
//上面一樣是偷懶引用法。我這個人就是懶惰...,記得!這種方法不是在每一個版本的C++都可以用,一般來說,還是用傳統的雙冒號(::)的引用方法比較好。
//下面是一個示範,順便帶解說程式的功能!


template <class T>//宣告我要用template,然後將template的名字,宣告成T!當然你想宣告成shit也隨便你就是了...
T min11(T value1, T value2){
//在Template min1中,需要有template 變數兩個,分別是value1 and 2。
T minvalue=value1; //這裡一定要注意!最前面那個T 跟上面那一行的T是一樣的,都是告訴你的compiler,在T後面的變數都是屬於template <class T>的!每個變數都要宣告一次,然後後面的所有變數則不需要重覆宣告。比如說value1 就不需要放一個T在前面。
if (value2<minmaxvalue)
minmaxvalue=value2;
return minmaxvalue;
}

//在T max1(T value1, T value2)裡面,第一行我先讓變數minvalue(初始為空值,empty value)=變數value1,不管在value1裡面輸入甚麼值,預設其值都是最小的。

//然後第二行進入if判斷式,拿已經從空值變成value1的變數minvalue去跟value2做比較,如果value2比較小,那minvalue2結束,if判斷式結束,往下一行走。

//傳回minvalue的值。

//這裡解釋一下為什麼要用function template。最一開始我在寫這個作業的時候,直接寫在main function裡面的時候是完全沒有問題的。然後等我想要把interface的部分跟判斷結構拆開來,就出現了一個很大的問題。因為這個題目必須傳回integer, float point, double, char等不同型態的值,因此不管function type用甚麼樣的型態都不對,int? double?這樣都只能傳回單調的值。解決的方式有兩種,第一種比較麻煩,就是把所有不同型態的判斷分別寫出不同的function,然後在int main那邊輸出的時候引用各種不同的function來對應每一種不同型態的值。好!問題來了,為什麼這種方式很爛?理由很簡單!因為如果今天客戶龜毛,突然跟你說:拎杯今天心情好到想唱歌!不要比小,我們今天比大!的時候,顆顆,你有幾個不同型態的值,就要改幾個functions,越多functions我們這種可憐的工作人員就越可憐。那怎麼辦?付錢的是老大,他就算是流氓也是你的衣食父母啊!也決方法就是用類似這樣的東西來做!Function Template!噹噹噹噹噹噹噹!仔細看一下,這種function不需要解釋值的型態,簡直就是為了讓我們工作人員升天的專用好物,想這樣的function只需要改一次,就可以對應所有不同型態的值;如果今天客戶要比大,那就把if判斷式那一行裡面的判斷符號從小於(<)換成大於(>),其他都不需要改,不用十秒就搞定了!有沒有很方便?顆顆!再龜毛,我們也是有辦法對應的啦!




int main(){
int int1;//宣告變數型態
int int2;
float floatnumber1;
float floatnumber2;
char letter1;
char letter2;


cout<<"\nenter the integer number1 and integer number 2: ";//輸出文字,然後文字後面可以輸入你想輸入的值
cin>>int1>>int2;//將你剛剛輸入的值,分別代進你設定的變數裡面
cout<<"\nSmaller: "
<< min1( int1, int2);//這個是直接引用你剛剛寫好的template來輸出,你給的element是甚麼,結果就是甚麼。

cout<<"\nenter the float number1 and float number2: ";
cin>>floatnumber1>>floatnumber2;
cout<<"\nSmaller: "
<< min1( floatnumber1,floatnumber2);//這個的element型態變成浮點數


cout<<"\nenter the char letter 1 and char letter 2: ";
cin>>letter1>>letter2;
cout<<"\nSmaller: "
<< min1( letter1, letter2);//這個是一般英文字母字元




system("pause");
return 0;//因為是int main(),所以一定要傳回的整數。
}

arrow
arrow
    全站熱搜

    archerdevil 發表在 痞客邦 留言(0) 人氣()