c++随机产生数据的问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 22:59:56
有48位职员,安排没人每星期休息两天,有5天14个人休息,2天13个人休息,写了程序如下,编译链接都没问题,就是结果不符,希望哪位高手帮忙解决。

#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
class zhiyuan
{
public:
int m; //职员代号
int k; //休息天数记录
};

int *suiji(zhiyuan *p)
{
int t;
int num[13];
srand(time(0)); //按时间产生seed
for(int i=0;i<13;i++)
{
t=rand()%47+1; //随机产生一个代号
for(int j=0;j<i;j++)
{
while(p[t].k>2) //休息天数不超过两天
{
if(t==47)t=0;
t++;

}
if(t==num[j]) //不能产生同样的代号
{
t=rand()%47+1;
j=0;
continue;
}
}
num[i]=t; //把产生的代号存入数组
p[t].k++; //相应的休息天数增加
}
return num;
}

int main()
{
zhiyu

#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
class zhiyuan
{
public:
int m; //职员代号
int k; //休息天数记录
};

void suiji(zhiyuan *p,int num[13])
{
int t;
srand(time(0)); //按时间产生seed
for(int i=0;i<13;i++)
{
t=rand()%47+1; //随机产生一个代号
for(int j=0;j<i;j++)
{
while(p[t].k>2) //休息天数不超过两天
{
if(t==47) t=0;
t++;

}
if(t==num[j]) //不能产生同样的代号
{
t=rand()%47+1;
j=0;
continue;
}
}
num[i]=t; //把产生的代号存入数组
p[t].k++; //相应的休息天数增加
}
}

int main()
{
zhiyuan p[48];
int num[13];
for(int i=0;i<13;i++)
num[i]=0;
for(i=0;i<48;i++)
{
p[i].m=i; //把职员的代号设置为0-47
p[i].k=0; //休息的天数初始化为0

}
suiji(p,num);
for(int s=0;s<13;s++)
cout<<num[s]<<&q