卡布列克运算验证_第1页
卡布列克运算验证_第2页
卡布列克运算验证_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要卡布列克运算是指给定任意一个四位整数 N(N>0),其各位数字不完全相同。这个 数必有这样的规律:1)把组成N的四个数字从小到大排列,构成最小四位数min; 2)把组成N的四个数字从大到小排列,构成最大四位数max 3)然后求max与min之差,得到一个新的四位数 ; 把新的四位数重复以上过程,最后总能得到结果: 6174该验证过程采用面向对象方法, 将数学和编程相结合, 再通过构建对象数组来完成。 关键词:卡不列克运算、验证、面向对象、对象数组2设计方案2.1整体设计方案如下:输入(1个4位数)»»检查输入获取各个数位并排序验证过程生成最小四位数 min最大四位

2、数 maxmax与min之差重复以上流程直到结果为61742.1.1输入检查输入要求各位不完全相同的4位数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+)获取各个数位并排序相关头文件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);生成最小四位数 min最大四位数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;验证过程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<<"未接受数字! !" << 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 << "检验完毕"<<std:endl;2.1.2验证过程void main()int count =

6、0;kabulek k10000;/建立对象数组for (int i = 1;i != 10000;i+)ki.setNum(i);ki.verify();return ;3.程序演示:SBC:Windowssystem32cmd.ex e请按任意键继续C:Windowssystem32cmd.exe7443'3447=39963963-3699=62646642-2466=41767641-1467=6174检验完毕1027请按任意键继续num:10277210-0127=70838730-0378=83528532-2358=6174检验完毕1028请按任意键继续-num:1028

7、8210-0128=80823820-828»8532B532-2358=6174检验完毕1029倩按5負键吐垃结论无论学习什么,亲自动手去做了才能得到最深刻的体会。附录代码kabulek.h#pragma onceclass kabulek/要验证的数字int num;/十进制位int nnnn4;/是否接受到一个符合要求的数字bool hasAccepted;public :默认构造函数kabulek();kabulek( int );kabulek();/验证void verify();/静态函数isAcceptabble判断是否符合要求static bool isAccept

8、able( int );/num settervoid setNum( int n);private :/构成最小四位数int mi nF orm();/构成最大四位数int maxForm();/求取一个4位数的各位并排序void setsort( int 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<<"未接受数字! !" << 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 << "检验完毕"<<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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论