在生活中我们在组织某些活动的时候难免会遇到将参与者分成多个小组进行相关活动,以及在研究生日常的组会中也许也会将同门师兄弟分成小组拉进行每周的组会汇报,那么这时就需要体现公平、随机的理念了,本文就是考虑到日常生活中的随机分小组的难题,写出了此文,希望对各位看官有所帮助。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
float N;
int p=0;
cout << "请输入总的人数:" << endl;
cin >> N;
float n;
cout<<"请输入每个小组的人数:"<<endl;
cin>>n;
float t=N/n;
int T;
if(t-(int)t==0)
{
T=(int)t;
}
else
{
T=(int)t+1;
}
cout<<"总共有"<<T<<"个小组"<<endl<<endl;
ifstream fp1;
ofstream fp2;
fp1.open("123.txt",ios::in);
fp2.open("1234.txt",ios::out|ios::trunc);
cout<<"正在读入全体成员名单:"<<endl;
string Name[(const int)N];
int a[(const int)N];
for (int i = 0; i < (int)N; i++)
{
fp1>>Name[i];
}
fp1.close();
cout<<"名单读入完成"<<endl;
for (int j = 0; j < (int)N; j++)
{
if ((j + (int)n) % (int)n== 0)
{
p=p+1;
cout <<"第"<<p<<"小组名单如下"<< endl ;
}
C1: a[j]= (rand() % ((int)N - 1+ 1) + 1);
for (int k = 0; k < j; k++)
{
if (j == 0)
{
break;
}
else if (a[j] == a[k])
{
goto C1;
}
}
fp2<<Name[a[j]-1]<<endl;
cout << Name[a[j] -1]<< "\t";
if ((j + 1) % (int)n == 0)
{
cout <<endl << endl;
}
}
cout<<endl<<endl;
fp1.close();
system("pause");
return 0;
}
代码较简单就不再说明,本文不足点是仅仅只实现了文本文件的正确读取,对于Excel等其他文件均不能成功实现读取文件,夜已深,就不再去寻求想干结局颁发了,大概还是文件格式的问题,各位有好的解决办法可以在下面留言,让阿军也学习学习!!!!
另外TXT文件有多种形式,若是在保存TXT文件时没有选择争取的形式就会导致在读取和写入TXT时出现乱码,能够正常读入中文的格式为ANSI格式,其他格式读取中文会乱码,诸君注意一下这个地方,阿军解决了很久。这里参考了c++ txt文件的读写及乱码问题解决_ZhanCF的博客-CSDN博客该博主的内容(若有冒犯联系阿军删除),其实就是一个小问题,就是在文件保存的时候勾选一下ANSI就行。具体方法是打开TXT文件,然后右上角文件——另存为——编码——勾选ANSI格式——保存。
就注意一下画了蓝色圆圈的内容即可!!!