/*-----------------------------------------------------------------------------------------迴文是指的是順講習和逆讀都一樣的字串。例如,“tot”和“otto”都是簡短的迴文。編寫一個程式,讓使用者輸入字串,並將字串引用傳遞給一個bool函數。如果字串是迴文,該函數將返回true,否則返回false。此時,不要擔心諸如大小寫、空格和標點這些複雜的問題。即這個簡單的版本將拒絕"Otto"和"Madam, I'm Adam"。檔案:test.cpp-------------------------------------------------------------------------------------------*/#include<iostream>#include<string>using std::string ;using std::cout ;using std::cin ;bool IsPlaint(const string &szStr) ;bool IsPla(const string &szStr) ; //此乃是答案版本int main(void){string szStr ;cout << "Enter a word(q to quit) : " ;while(cin >> szStr && szStr != "q"){if(IsPlaint(szStr)){cout << "What you have enter "<< szStr << " is a plaint word \n\n" ;}else{cout << "What you have enter "<< szStr << " isn't a plaint word \n\n" ;}cout << "Enter next word(q to quit) : " ;}return 0 ;}bool IsPlaint(const string &szStr){int i = 0 ;int n = 0 ;n = szStr.size() ;for(i = 0 ; i < (n / 2) ; i++){if(szStr[i] != szStr[n-i-1])return false ;}return true ;}bool IsPla(const string & szStr) // 赤裸裸的STL。。。。{string re(szStr.rbegin() ,szStr.rend () ) ;return ( re == szStr ) ;}
/*-----------------------------------------------------------------------------------------編寫一個具有老式風格介面的函數,其原型如下:int reduce (long ar[] , int n ) ;實參應是數組名和數組中的元素個數。該函數對數組進行排序,重複資料刪除的值,返回縮減後數組中的元素數目。請使用STL函數編寫該函數(如果決定使用通用的unique()函數,請注意它將返回結果區間的結尾)。使用一個小程式測試該函數。檔案:test.cpp-------------------------------------------------------------------------------------------*/#include<iostream>#include<string>using std::string ;using std::cout ;using std::cin ;using std::getline ;using std::endl ;int reduce(long ar[] , int n ) ;void show(long ar[] ,int n ) ;int main(void){long ar[10] = {9,3,4,7,4,3,10,8,8,4} ;show(ar, 10) ;cout << "There are " << reduce(ar,10) << " numbers" ;return 0 ;}void show(long ar[], int n ) {int i = 0 ;for(i = 0 ; i < n ; i++){cout << ar[i] << endl ;}}int reduce(long ar[] , int n ){int i = 0 ;long *begin , *end ;begin = ar ;end = ar + n ;std::sort(begin,end) ;end = std::unique(begin,end) ; //STL用法,很不習慣,而且經常要去尋找return end - ar ;}
/*-----------------------------------------------------------------------------------------編寫一個具有老式風格介面的函數,其原型如下:int reduce (long ar[] , int n ) ;實參應是數組名和數組中的元素個數。該函數對數組進行排序,重複資料刪除的值,返回縮減後數組中的元素數目。請使用STL函數編寫該函數(如果決定使用通用的unique()函數,請注意它將返回結果區間的結尾)。使用一個小程式測試該函數。檔案:test.cpp-------------------------------------------------------------------------------------------*/#include<iostream>#include<string>using std::string ;using std::cout ;using std::cin ;using std::getline ;using std::endl ;template<class T>int reduce(T ar[] , int n ) ;void show(long ar[] ,int n ) ;int main(void){long ar[10] = {9,3,4,7,4,3,10,8,8,4} ;show(ar, 10) ;cout << "There are " << reduce(ar,10) << " numbers" ;return 0 ;}void show(long ar[], int n ){int i = 0 ;for(i = 0 ; i < n ; i++){cout << ar[i] << endl ;}}template<class T>int reduce(T ar[] , int n ){int i = 0 ;T *begin , *end ;begin = ar ;end = ar + n ;std::sort(begin,end) ;end = std::unique(begin,end) ;return end - ar ;}
/*---------------------------------------------------------------------------------------------
本來要做多幾題練習題,發現自己對STL的概念,還有一些庫裡面的函數
不是記得很清楚,所以還是先做兩題先。其它的等自己熟悉一下再去練一
下。
-----------------------------------------------------------------------------------------------*/