1. 功能
根据数据自动随机分组,目前不支持输入中文等非c++自带的语言库。
2. 使用方法
需要读取的数据有两个:data.txt和list.txt。
data.txt
data.txt表示组别的要求,包含两个要素:组数和每组的大小,比如:
3
3 3 2
表示分3组,第一组3个元素,第二组3个元素,第三组2个元素
再如:
6
6 6 6 6 6 6
表示6组,每组6个元素。
list.txt
list.txt表示名单,也有两个要素:对象个数和每个对象的编号,比如:
3
1 2 3
表示有3个对象要分组,分别是1、2、3。
再如:
10
a b c d e f g h i j
表示有十个编号为从a~j的对象。
在设定好上者两个txt后,将其放入exe程序的文件目录下,双击运行。
此时程序会显示“press enter to start”的字样,按回车则会自动生成result.txt。
result.txt即为生成结果。
3.代码一览
初版代码,十分简陋,后续可能更新。
#include <bits/stdc++.h>
#include<locale>
using namespace std;
inline read() {
long long x=0ll,f=1ll;
char ch=getchar();
while(ch<'0'||'9'<ch){
if(ch=='-')f=-1ll;
ch=getchar();
}
while('0'<=ch&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return f*x;
}
int n,m;
vector<string> lis;
void print(string a){
for (int j = 0; j < a.length(); j++){
if(a[j]&0x80 && (unsigned)a[j]>=0){
string t=a.substr(j++,2);
printf("%s",t.c_str());
}else{
printf("%c",a[j]);
}
}
}
int main() {
// locale china("chs");
// wcin.imbue(china);
// wcout.imbue(china);
srand(time(NULL));
puts("random list code by return G ver 1.0");
puts("press any key to start");
getchar();
puts("lis reading");
freopen("list.txt","r",stdin);
n=read();
string str;
for(int i=0;i<n;i++){
cin>>str;
lis.push_back(str);
}
fclose(stdin);
puts("list loaded");
freopen("data.txt","r",stdin);
puts("data reading");
puts("result created");
freopen("result.txt","w",stdout);
m=read();
int nx,r;
for(int i=1;i<=m;i++){
nx=read();
cout<<"第"<<i<<"组: ";
for(int j=1;j<=nx;j++){
r=rand()%n;
print(lis[r]);
printf(" ");
lis.erase(lis.begin()+r);
n--;
}
puts("");
}
return 0;
}