随机数产生模拟中奖号的生成程序

闲来没事做,写个模拟中奖的生成程序,程序的思路是用随机数产生器随机产生两个字符串数组,每个字符串数组又分为N个子字符串,如果这两个组里面有任何俩个子字符串是相同的,就作为中奖号码 #include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

vector sets1,sets2,sets3;//用来保存字符串集合

void product(vector&sets,int num1,int num2)//num1传入每个字符串的长度,num2传入字符集中字符串的个数

{

for(int s=0;s

{

string s;

char ch;

for(int i=0;i

{

int x=rand()%10;

ch=x+48;

s+=ch;

}

sets.push_back (s);// 将字符串放入字符集中

}

}

bool CompareStrings(string &s1,string &s2)

{

bool tag=true;

if(s1.size() ==s2.size())

{

for(int i=0;i

{

if(s1[i]!=s2[i])

{

tag=false;

break;

}

}

}

else

tag=false;

return tag;

}

int main()

{

int StringLength=0;//用来指定每个字符串的长度

int StringsNumbers=0;//用来指定2个字符集中字符串的个数

cout<<"请输入字符串集的字符串的个数:"<

cin>>StringsNumbers;

assert(StringsNumbers>0);

cout<<"请输入每个字符串的长度:"<

cin>>StringLength;

assert(StringLength>0);

srand((unsigned)time(0));//设定种子为时间

product(sets1,StringLength,StringsNumbers);

product(sets2,StringLength,StringsNumbers);

stable_sort(sets1.begin (),sets1.end ());//对字符集排序

stable_sort(sets2.begin (),sets2.end ());

// cout<<"集合1的字符串为:"<

// vector::iterator iter1=sets1.begin ();

// for( ;iter1!=sets1.end ();++iter1) [Page]

// cout<<*iter1<

// cout<<"集合2的字符串为:"<

// vector::iterator iter2=sets2.begin ();

// for( ;iter2!=sets2.end ();++iter2)

// cout<<*iter2<

int i=0;

int j=0;

int k=0;

while(i

{

if(sets1[i][k]

{

++i;

k=0;

}

else if(sets1[i][k]>sets2[j][k]&&j

{

++j;

k=0;

}

else//如果sets1[i][k]==sets2[j][k],那么比较sets1[i][k+1]和sets2[j][k+1]

{

++k;

if(k==StringLength&&i

{

sets3.push_back (sets1[i]);

if(i

++i;

if(j

++j;

k=0;

}

}//else

}//while

if(sets3.empty ())

cout<<"没有公共字符串! "<

else

{

cout<<"公共字符串为:"<

vector::iterator it=sets3.begin ();

for(;it!=sets3.end ();++it)

cout<<*it<

}

return 0;

}




免责声明:

本站系本网编辑转载,会尽可能注明出处,但不排除无法注明来源的情况,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系, 来信: liujun@soft6.com 我们将在收到邮件后第一时间删除内容!

[声明]本站文章版权归原作者所有,内容为作者个人观点,不代表本网站的观点和对其真实性负责,本站拥有对此声明的最终解释权。