资源简介
彩票模拟生成和兑奖,输入要买的号码,然后利用 折半查找,哈希查找或者顺序查找,找出中奖的号码
代码片段和文件信息
#include
#include
#include
#define random(x) (rand()%x) //随机数
const int MAX=7; //彩票数组的容量
const int HashMAX=10; //散列数组的容量
const int HashP=7; //给定值
//---------------------类的建立----------------
class CP
{
private:
int hl[MAX]; //中奖号码
int Hash[HashMAX]; //散列数组
public:
CP(){}; //构造函数
void suiji(); //取随机数
int search(int data); //顺序查找
void sort(); //冒泡排序
int binarySearch(int data); //折半查找
void hash_jl(); //散列表的建立
int hash_cz(int data); //哈希查找
void display(); //输出开奖号码
};
//-----------------------------输出开奖号码------------------------------
void CP::display()
{
for(int i=0;i cout< cout< }
//------------------------------取随机数----------------------------------
void CP::suiji()
{
int nflag;
cout<<“\t “;
srand(time(0));
for(int i=0;i {
flag=1; //用来判断是否重复
n=random(37); //取小于37的随机数
if(n!=0) //排除取到0的值
{
for(int j=i;j>=0;j--)
if(n == hl[j])
flag=0; //当flag=0的时候 证明有重复
if(flag) //当flag!=0的时候,将数值保存到数组
{
hl[i]=n;
i++;
}
}
}
}
//-----------------------------顺序查找----------------------------------
int CP::search(int data) //顺序查找
{
int i;
for(i = 0; i < MAX; ++i)
{
if(hl[i] == data)
return i;//查找成功
}
return -1;//查找失败
}
//----------------------------折半查找---------------------------------
void CP::sort() //冒泡排序
{
int temp;
for(int i=0;i for(int j=i;j if(hl[i]>hl[j])
{
temp=hl[i];
hl[i]=hl[j];
hl[j]=temp;
}
}
int CP::binarySearch(int data) //折半查找
{
int low mid high;
low = 0;
high = MAX - 1; //初始化lowhigh,使他们分别指向表头表尾
while(low <= high) //当low>high的时候 循环结束
{
mid = (low + high) / 2; //取mid的值
if(data == hl[mid])
return mid; //查找成功
else
if(data < hl[mid])
high = mid - 1; //查找失败的时候,如果是小于mid所指,则将high指向mid的上一个数值
- 上一篇:RTSP服务器 C语言
- 下一篇:socket tcp通信 多客户端
评论
共有 条评论