發新話題

[教學]使用STL解題範列

[教學]使用STL解題範列

問 :
輸入一個字母順序弄混的英文單字到一字元陣列內,請寫一個程式將此
    輸入的錯誤英文單字由第一個字母起使用鄰近字母對調方式一步一步地
    回復原有正確英文字順序,並將中間過程印出,例如: 輸入原為 apple
    蘋果的錯誤單字 epalp ,則程式應印出:

              epapl -> eappl -> aeppl -> apepl -> appel ->apple

答 :

另類作法    最好不要直接將以下程式當作業交  
找書將以下的 find, copy, swap 等函式的意義搞清楚  再用簡單的語法替代
否則很容易被--抓包
複製內容到剪貼板
代碼:
#include <iostream>
#include <algorithm>
#include <iterator>

using namespace std ;

int main() {
   
    const int S = 5 ;
    char  correct[S] = { 'a' , 'p' , 'p' , 'l' , 'e' } ;
    char  wrong[S] = { 'e' , 'p' , 'a' , 'p' , 'l' } ;
   
    int i  ;
    char  *j , *k ;
    copy( wrong , wrong+S , ostream_iterator<char>(cout," ") ) ;
   
    for ( i = 0 ; i < S ; ++i ) {
        j = find( wrong+i , wrong+S , correct[i]  ) ;
        
        for ( k = j ; k > wrong+i ; --k ) {
            swap( *k , *(k-1) ) ;
            cout << " --> " ;
            copy( wrong , wrong+S , ostream_iterator<char>(cout," ") ) ;
         }   
    }
    cout << endl ;
    system("pause") ;
    return 0 ;
}
[ 本帖最後由 philxyz0316 於 2006-8-27 13:04 編輯 ]

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。