数据随机分组程序

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;
}

下载地址

不点个推荐再走么?( • ̀ω•́ )✧
原文地址:https://www.cnblogs.com/returnG/p/14611471.html