买彩游戏(类和对象)

题目描述

(彩票共有七个号码,每个号码的区间为0-30)

输入购买彩票的组数n彩票购买者的名字name

随机生成n组福利彩票号码和摇奖后的中奖号码

将购买者所买的每组号码依次与中奖号码进行匹配:当从左至右各位置上的号码一一相同,则表示你中了一等奖;如果有5、6个相同则为二等奖;余下大于两个以上相同的号码均为三等奖,编程实现该游戏规则!

输入

2

Tom

输出

恭喜XXX中了(多少注)一等奖|(多少注)二等奖|(多少注)三等奖!

或者:

加油!继续!

#include <iostream>
#include <string>
#include <time.h>
#include <assert.h>
using namespace std;
int *generateRandomArray(int n,int rangeL,int rangeR){
    //如果expression为false,在stderr上打印一条包含“表达式,文件名,行号”的错误信息,然后调用abort结束整个程序
    assert(rangeL<=rangeR);
	int *arr = new int[n];
	//time_t time(time_t *t)返回自Unix时间纪元(1970.01.01/00:00:00)起的到当前时间的秒数,可以用一个指针接收
	srand(time(NULL));//设置随机数产生器的初始值(种子值)
	for(int i=0;i<n;i++)
        //rand根据种子生成伪随机数,若种子不变生成的伪随机数序列也不变
	    arr[i]=rand()%(rangeR-rangeL+1)+rangeL;
    return arr;
}
class Buyer{
public:
    string name;
    int sets;
    int **lottery;
    Buyer(string n,int s):name(n),sets(s){
        lottery=new int *[sets];
        for(int i=0;i<sets;i++){
            //随机生成每一组彩票的号码
            lottery[i]=generateRandomArray(7,0,30);
            //设置生成每组彩票的时间间隔
            if(i<sets-1){
                int startT=clock();//程序一开始clock()就自动运行,每过1ms其返回值就+1
                for(int endT=0;endT<1000;){//1s后退出循环
                    endT=clock();
                    endT=endT-startT;
                }
            }
        }
    };
    ~Buyer(){
        for(int i=0;i<sets;i++)
            delete [] lottery;
    }
    void print(int *result){
        int first=0,second=0,third=0;
        for(int i=0;i<sets;i++){
            int same=0;
            for(int j=0;j<7;j++){
                if(lottery[i][j]==result[j])
                    same++;
            }
            if(same==7)
                first++;
            else if(same>4)
                second++;
            else if(same>1)
                third++;
        }
        if(first==0&&second==0&&third==0)
            cout<<"加油!继续!"<<endl;
        else{
            cout<<"恭喜"<<name<<"中了";
            if(first!=0)
                cout<<first<<"注一等奖";
            if(second!=0)
                cout<<second<<"注二等奖";
            if(third!=0)
                cout<<third<<"注三等奖";
            cout<<"!"<<endl;
        }
    }
};
int main(){
    int n;
    string name;
    cin>>n>>name;
    int *result=generateRandomArray(7,0,30);
    int startT=clock();
    for(int endT=0;endT<1000;){
        endT=clock();
        endT=endT-startT;
    }
    Buyer buyer(name,n);
    buyer.print(result);

    return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值