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

2016-02-19 19:15 4 1 收藏

下面这个理解C++程序设计中的抽象理论教程由图老师小编精心推荐选出,过程简单易学超容易上手,喜欢就要赶紧get起来哦!

【 tulaoshi.com - 编程语言 】

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++相关文章专题,或

来源:http://www.tulaoshi.com/n/20160219/1620473.html

延伸阅读
本篇说明内容是C++中的要害,基本大部分人对于这些内容都是昏的,但这些内容又是编程的基础中的基础,必须具体说明。 数字表示 !-- frame contents -- !-- /frame contents -- 数学中,数只有数值大小的不同,绝不会有数值占用空间的区别,即数学中的数是逻辑上的一个概念,但电脑不是。考虑算盘,每个算盘...
本节主要介绍Turbo C程序设计的基本步骤及如何编译、调试和运行源程序。并给出Turbo C的常用编辑命令。最后介绍Turbo C编译、连接和运行时的常见错误。 一、Turbo C程序设计基本步骤 程序设计方法包括三个基本步骤: 第一步: 分析问题。 第二步: 画出程序的基本轮廓。 第三步: 实现该程序。 3a. 编写程序 3b. 测试和调试程...
本篇是此系列的开头,在学英语时,第一时间学的是字母,其是英语的基础。同样,在C++中,所有的代码都是通过标识符(Identifier)、表达式(EXPression)和语句(Statement)及一些必要的符号(如大括号等)组成,在此先说明何谓标识符。 !-- frame contents -- !-- /frame contents -- 标识符 标识符是一个字母序列...
C++是一门广泛用于工业软件研发的大型语言。它自身的复杂性和解决现实问题的能力,使其极具学术研究价值和工业价值。和C语言一样,C++已经在许多重要的领域大获成功。 然而,一个不可否认的现实是,在低阶程序设计领域,C++挤压着C同时也在承受着C的强烈反弹,而在高阶程序设计领域,Java和C#正在不断蚕食着C++的地盘。也许C++与C合为一体...
六年前,我刚热恋“面向对象”(Object-Oriented)时,一口气记住了近十个定义。六年后,我从几十万行程序中滚爬出来预备写点心得体会时,却无法解释什么是“面向对象”,就象说不清楚什么是数学那样。 软件工程中的时髦术语“面向对象分析”和“面向对象设计”,通常是针对“需求分析”和“系统设计”环节的。“面向对象”有几大学派,就象如来...

经验教程

424

收藏

24
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部