日期: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++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论