资源简介

彩票模拟生成和兑奖,输入要买的号码,然后利用 折半查找,哈希查找或者顺序查找,找出中奖的号码

资源截图

代码片段和文件信息

#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的上一个数值

评论

共有 条评论