随机购买n注彩票,或者手动输入彩票数字,看看你的幸运值如何? 对体彩超级大乐透的前区5个数字和后区2个数字进行区分,前区(1-35),后区(1-12),避免错误输入,避免输入数字超过范围,避免前区或后区中有重复数字,判断获奖情况。
代码如下
#include#include #include #include using namespace std; //生成随机数 void produceNum(vector &A); //检测数字是否存在 bool checkSamenum(vector A,int temp); //打印数字 void printNum(vector A); //检测单注前后区中奖数字个数 vector correctNum(vector predictNum,vector chooseNum); //选择购买数字 void chooseNum(vector >&buyNum); //保存所有中奖情况 vector > winSum(vector &winNum,vector > buyNum); //获奖情况 void awards(vector > &winSum); //随机购买数字 void randomBuyNum(vector >&buyNum); void produceNum(vector &A){ //srand((unsigned)time(NULL)); int a = 1, b = 35,c=12; bool label=false; bool label1=false; for(int i=0;i<5;i++){ // 生成[a,b]的随机数 int temp=(rand() % (b-a+1)) + a; if(i==0){A.push_back(temp);} else{ label=checkSamenum(A,temp); while(label==true){ temp=(rand() % (b-a+1)) + a; //cout<<"same number: "<< temp< B; for(int j=0;j<2;j++){ int temp1=(rand() % (c-a+1)) + a; if(j==0){ B.push_back(temp1); } else{ label1=checkSamenum(B,temp1); while(label1==true){ temp1=(rand() % (c-a+1)) + a; //cout<<"same number2: "<< temp1< >>>"< A,int temp){ int label=false; int size=A.size(); for(int i=0;i if(A[i]==temp){ label=true; return label; } } return label; } void printNum(vector A){ for(vector ::iterator it=A.begin();it!=A.end();it++){ cout<<*it<<" "; } cout< correctNum(vector predictNum,vector chooseNum){ vector rightSum; int corct1=0,corct2=0; for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ if(chooseNum[j]==predictNum[i]){ corct1+=1; } } } for(int i=5;i<7;i++){ for(int j=5;j<7;j++){ if(chooseNum[j]==predictNum[i]){ corct2+=1; } } } rightSum.push_back(corct1); rightSum.push_back(corct2); return rightSum; } void randomBuyNum(vector >&buyNum){ cout<<"random buy lottery tickets"< >totalNum; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin number :"< >totalNum; } while(totalNum<0||totalNum>100){ cout<<"wrong number,please rechoose lottery tickets: (0~100)"< >totalNum; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin number :"< >totalNum; } } cout<<"the number you buy:"< vector single; produceNum(single); buyNum.push_back(single); } // for(int i=0;i // printNum( buyNum[i]); // } } void chooseNum(vector >&buyNum){ cout<<"How many lottery tickets do you want to buy (0~30) ?"< >totalNum; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin number (1~30)"< >totalNum; } while(totalNum<0||totalNum>30){ cout<<"wrong number,please rechoose lottery tickets: "< >totalNum; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin number (1~30)"< >totalNum; } } for(int i=0;i cout<<"choose the "< single; bool label=false; cout<<"cin 5 first number (1~35)"< int d=0; cin>>d; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin number (1~35)"< >d; } if(i==0){ while(d<0||d>35){ cout<<"wrong number,please choose again a"< >d; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin number (1~35)!"< >d; } } single.push_back(d); }else{ while(d<0||d>35){ cout<<"wrong number,please choose again "< >d; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin number (1~35) "< >d; } } label=checkSamenum(single,d); while(label==true){ cout<<"same number: "<< d<<" .please choose again"< >d; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin number (1~35)!"< >d; } while(d<0||d>35){ cout<<"wrong number,please choose again "< >d; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin number (1~35)!"< >d; } } label=checkSamenum(single,d); } single.push_back(d); } } // cout<<"single[5]"< A; for(int i=0;i<2;i++){ int d=0; cin>>d; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin number (1~12)"< >d; } if(i==0){ while(d<0||d>12){ cout<<"wrong number,please choose again"< >d; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin number (1~12)"< >d; } } A.push_back(d); }else{ while(d<0||d>12){ cout<<"wrong number,please choose again"< >d; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin number (1~12)!"< >d; } } label=checkSamenum(A,d); while(label==true){ cout<<"same number: "<< d<<" .please choose again"< >d; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin number (1~12)!"< >d; } while(d<0||d>12){ cout<<"wrong number,please choose again"< >d; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin number (1~12)!"< >d; } } label=checkSamenum(A,d); } A.push_back(d); } } // cout<<"A[2]"< printNum( buyNum[i]); } } vector > winSum(vector &winNum,vector > buyNum){ int size=buyNum.size(); vector > sumCorct; for(int i=0;i vector corct=correctNum(winNum,buyNum[i]); sumCorct.push_back(corct); } return sumCorct; } void awards(vector > &winSum){ int size=winSum.size(); for(int i=0;i int a=winSum[i][0]; int b=winSum[i][1]; cout<<"the "< cout<<"First prize"< cout<<"Second prize"< cout<<"Third prize"< cout<<"Fourth prize"< cout<<"Fifth prize"< cout<<"Sixth prize"< cout<<"Seventh prize"< cout<<"Eighth prize"< cout<<"Ninth prize"< cout<<"nothing"< srand((unsigned)time(NULL)); vector producenumber; vector >buyNum; vector >winsum; string israndombuy=""; cout<<"do you want to buy lottery tickets random ? (yes/no)"< >israndombuy; while(cin.fail()){ cin.clear();//清除cin的错误信息 cin.ignore();//忽略掉缓冲区的内容,置于EOF位置 cout<<"please cin (yes/no) :"< >israndombuy; } if(israndombuy=="yes"){ randomBuyNum(buyNum); }else if(israndombuy=="no"){ chooseNum(buyNum);} else{ cout<<"wrong answer"<



