卡布列克運(yùn)算驗(yàn)證_第1頁
卡布列克運(yùn)算驗(yàn)證_第2頁
卡布列克運(yùn)算驗(yàn)證_第3頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、摘要卡布列克運(yùn)算是指給定任意一個四位整數(shù) N(N>0),其各位數(shù)字不完全相同。這個 數(shù)必有這樣的規(guī)律:1)把組成N的四個數(shù)字從小到大排列,構(gòu)成最小四位數(shù)min; 2)把組成N的四個數(shù)字從大到小排列,構(gòu)成最大四位數(shù)max 3)然后求max與min之差,得到一個新的四位數(shù) ; 把新的四位數(shù)重復(fù)以上過程,最后總能得到結(jié)果: 6174該驗(yàn)證過程采用面向?qū)ο蠓椒ǎ?將數(shù)學(xué)和編程相結(jié)合, 再通過構(gòu)建對象數(shù)組來完成。 關(guān)鍵詞:卡不列克運(yùn)算、驗(yàn)證、面向?qū)ο?、對象?shù)組2設(shè)計方案2.1整體設(shè)計方案如下:輸入(1個4位數(shù))»»檢查輸入獲取各個數(shù)位并排序驗(yàn)證過程生成最小四位數(shù) min最大四位

2、數(shù) maxmax與min之差重復(fù)以上流程直到結(jié)果為61742.1.1輸入檢查輸入要求各位不完全相同的4位數(shù)boolkabulek :isAcceptable(intn)if ( n < 1000) returnfalse ;if ( n >= 10000) returnfalse ;int arr4;for (int i = 0;i != 4;i+)arri =n % 10;n /= 10;for ( int i = 0;i != 3;i+)for (int j = i + 1;j != 4;j+)獲取各個數(shù)位并排序相關(guān)頭文件cstdlib.hkabulek.hvoid kabul

3、ek :setsort( intn)for (int i = 0;i != 4;i+) nnnni =n % 10;n /= 10;std:sort (nnnn, nnnn + 4);生成最小四位數(shù) min最大四位數(shù)maxint kabulek :minForm()int n = 0;for (int i = 0;i != 4;i+)n *= 10;n += nnnn i;return n;int kabulek :maxForm()int n=0;for ( int i = 3;i >= 0;i-)n *= 10;n += nnnn i;return n;驗(yàn)證過程void kabule

4、k:showStep( int n)std:cout << maxForm() <<"-"<<std:setw<<std:setfill( '0')<<minForm() <<"=" <<n <<std:endl;void kabulek :verify。if (hasAccepted= false ) std:cout<<"未接受數(shù)字! !" << std:endl;return ;=std:cou

5、t << "num:" <<num << std:endl;this ->setsort(num);int n = maxForm() - minForm();this ->showStep(n);while (n!=6174)this ->setsort(n);n = maxForm() - minForm();this ->showStep(n);std:cout << "檢驗(yàn)完畢"<<std:endl;2.1.2驗(yàn)證過程void main()int count =

6、0;kabulek k10000;/建立對象數(shù)組for (int i = 1;i != 10000;i+)ki.setNum(i);ki.verify();return ;3.程序演示:SBC:Windowssystem32cmd.ex e請按任意鍵繼續(xù)C:Windowssystem32cmd.exe7443'3447=39963963-3699=62646642-2466=41767641-1467=6174檢驗(yàn)完畢1027請按任意鍵繼續(xù)num:10277210-0127=70838730-0378=83528532-2358=6174檢驗(yàn)完畢1028請按任意鍵繼續(xù)-num:1028

7、8210-0128=80823820-828»8532B532-2358=6174檢驗(yàn)完畢1029倩按5負(fù)鍵吐垃結(jié)論無論學(xué)習(xí)什么,親自動手去做了才能得到最深刻的體會。附錄代碼kabulek.h#pragma onceclass kabulek/要驗(yàn)證的數(shù)字int num;/十進(jìn)制位int nnnn4;/是否接受到一個符合要求的數(shù)字bool hasAccepted;public :默認(rèn)構(gòu)造函數(shù)kabulek();kabulek( int );kabulek();/驗(yàn)證void verify();/靜態(tài)函數(shù)isAcceptabble判斷是否符合要求static bool isAccept

8、able( int );/num settervoid setNum( int n);private :/構(gòu)成最小四位數(shù)int mi nF orm();/構(gòu)成最大四位數(shù)int maxForm();/求取一個4位數(shù)的各位并排序void setsort( int n);/輸出驗(yàn)證的每一次步驟void showStep( int );kabulek.cpp#i nclude "kabulek.h" #includealgorithm #inelude <iostream> #inelude <iomanip>void kabulek:setsort( in

9、tn)for ( inti = 0;i != 4;i+) nnnn i=n % 10;n /= 10;std:sort (nnnn, nnnn + 4);kabulek :kabulek()hasAccepted = false ;kabulek :kabulek( int n):num( n)hasAccepted = isAcceptable( n);if (!hasAccepted) return ;this ->setsort( n);kabulek :kabulek()void kabulek:showStep( int n)std:cout << std:setw

10、<< std:setfill( 'O')<< maxForm() <<"-"<<std:setw <<std:setfill( '0') <<minForm() <<"=" <<n <<std:endl;void kabulek :verify()if (hasAccepted= false ) std:cout<<"未接受數(shù)字! !" << std:endl;return

11、 ;std:cout << "num:" <<num << std:endl; this ->setsort(num);int n = maxForm() - minForm();this ->showStep(n);while (n!=6174)this ->setsort(n);n = maxForm() - minForm();this ->showStep(n);std:cout << "檢驗(yàn)完畢"<<std:endl;boolkabulek :isAccepta

12、ble(intn)if ( n < 1000) return false ;if ( n >= 10000) returnfalse ;int arr4;for (int i = 0;i != 4;i+)arri =n % 10;n /= 10;for (int i = 0;i != 3;i+) for (int j = i + 1;j != 4;j+)void kabulek :setNum( int n)std:cout << n << std:endl; system( "Pause");hasAccepted=isAcceptab

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論