資源簡介
彩票模擬生成和兌獎,輸入要買的號碼,然后利用 折半查找,哈希查找或者順序查找,找出中獎的號碼
代碼片段和文件信息
#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? {??????
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? high?=?mid?-?1;?????//查找失敗的時候,如果是小于mid所指,則將high指向mid的上一個數值
- 上一篇:RTSP服務器 C語言
- 下一篇:socket tcp通信 多客戶端
評論
共有 條評論