当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

理解C++面向对象程序计划中的抽象理论[VC/C++编程]

赞助商链接



  本文“理解C++面向对象程序计划中的抽象理论[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

很多书在一开始就开始学习josephus问题,为了让大家前面学起来较为简单我把前面触及到此问题的地方都成心去掉了,目前我们已经学习过了构造体和类,所以放在这里学习大概更符合一些.

在正式开始学习之前我们先回想一下若何操纵数组和构造体的方法来办理,最后我们再看一下若何操纵面向对象的抽象理念举行办理此问题的程序计划,彼此比较,找出效率最高,最简单理解,最便利保护的程序来,阐明操纵面向对象的抽象理念举路程序计划的好处.

josephus问题其实就是一个游戏,一群小孩围成一个圈,设置一个数,这个数是个小于小孩总数大于0的一个整数,从第一个小孩开始报数,当此中一个小孩报到你设置的那个数的时刻脱离那个圈,这样一来反复报下去,直到只剩下最后一个小孩的时刻那个小孩就是成功者,写程序来找出这个小孩.

以下是数组办法:

由于数组的限制我们必须预先假定好有多少个小孩,脱离的小孩他自身设置为0来标志脱离状况.

代码以下:

#include<iostream> 
usingnamespacestd; 
voidmain() 
{ 
  constintnum=10; 
  intinterval; 
  inta[num]; 
  for(inti=0;i<num;i++) 
  { 
   a[i]=i+1; 
  } 
   cout<<"pleaseinputtheinterval:"; 
  cin>>interval; 
  for(inti=0;i<num;i++) 
  { 
   cout<<a[i]<<","; 
  } 
   cout<<endl; 
 
intk=1; 
intp=-1; 
 
while(1) 
{ 
   for(intj=0;j<interval;) 
   { 
     p=(p+1)%num; 
     if(a[p]!=0) 
     { 
       j++; 
     } 
   } 
   if(k==num) 
   { 
     break; 
   } 
   cout<<a[p]<<","; 
   a[p]=0; 
   k++; 
} 
cout<<" No."<<a[p]<<"boy'vewon. "; 
cin.get(); 
cin.get(); 
}

就数组办理来看,程序简短但效率不高可读性也不好,此代码没有什么分外之处主要依靠一个加1取模的方法往复到首位置,形成环链:p=(p+1)%num;.


  以上是“理解C++面向对象程序计划中的抽象理论[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 深化理解Collections API
  • 深化理解Cookie
  • 理解C++非常处理的系统开支
  • <b>深化理解C++中的mutable关键字</b>
  • 理解C++面向对象程序计划中的抽象理论
  • <b>C++:从栈和堆来理解C#中的值范例和引用范例</b>
  • MySQL管理员帮你理解CREATE和REVOKE语句
  • 理解CSS的工作原理
  • <b>通过Dreamweaver学习理解CSS</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .