理解C++程序设计中的抽象理论

颓档诰都02

颓档诰都02

2016-02-19 19:15

下面这个理解C++程序设计中的抽象理论教程由图老师小编精心推荐选出,过程简单易学超容易上手,喜欢就要赶紧get起来哦!
josephus问题是c++中的一个经典题目,在正式开始学习之前我们先回顾一下如何利用数组和结构体来解决josephus问题,最后我们再看一下如何利用面向对象的抽象理念进行解决此问题的程序设计,相互对比,找出效率最高,最轻易理解,最方便维护的程序来,说明利用面向对象的抽象理念进行程序设计的好处。
  
  josephus问题其实就是一个游戏,一群小孩围成一个圈,设置一个数,这个数是个小于小孩总数大于0的一个整数,从第一个小孩开始报数,当其中一个小孩报到你设置的那个数的时候离开那个圈,这样一来反复报下去,直到只剩下最后一个小孩的时候那个小孩就是胜利者,写程序来找出这个小孩。
  
  以下是数组方法:
  
  由于数组的限制我们必须预先假设好有多少个小孩,离开的小孩他自身设置为0来标记离开状态。
  
  代码如下:
  
  
 C++ 代码  
  //程序作者:管宁 
  //所有稿件均有版权,如要转载,请务必闻名出处和作者 
   
  #include iostream 
  using namespace std; 
  void main() 
  { 
    const int num=10; 
    int interval; 
    int a[num]; 
    for(int i=0; inum; i++) 
    { 
      a[i]=i+1; 
    }  
      cout "please input the interval: "; 
    cin interval; 
    for(int i=0; inum; i++) 
    { 
      cout a[i] ","; 
    } 
      cout endl; 
   
  int k=1; 
  int p=-1; 
   
  while(1) 
  { 
      for(int j=0;jinterval;) 
      { 
          p=(p+1)%num; 
          if(a[p]!=0) 
          { 
              j++; 
          } 
      } 
      if(k==num) 
      { 
          break; 
      } 
      couta[p]","; 
      a[p]=0; 
      k++; 
  } 
  cout "No." a[p] " boy've won."; 
  cin.get(); 
  cin.get(); 
  }
  
  就数组解决来看,程序简短但效率不高可读性也不好,此代码没有什么非凡之处主要依靠一个加1取模的方式往返到首位置,形成环链:p=(p+1)%num;。 更多内容请看C/C++技术专题  C/C++进阶技术文档  C/C++相关文章专题,或
展开更多 50%)
分享

猜你喜欢

理解C++程序设计中的抽象理论

编程语言 网络编程
理解C++程序设计中的抽象理论

理解C++面向对象程序设计中的抽象理论

编程语言 网络编程
理解C++面向对象程序设计中的抽象理论

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

C++程序设计最佳实践

编程语言 网络编程
C++程序设计最佳实践

托管C++程序开发—Win表单文档程序设计(中)

C语言教程 C语言函数
托管C++程序开发—Win表单文档程序设计(中)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

对C++程序设计中函数重载的探讨

编程语言 网络编程
对C++程序设计中函数重载的探讨

C++程序设计中的多态技术研究

编程语言 网络编程
C++程序设计中的多态技术研究

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Dreamweaver制作技巧四则

Dreamweaver制作技巧四则

程序宝典:C++学习感想

程序宝典:C++学习感想
下拉加载更多内容 ↓