我帮忙开发了一款简单的抽签程序,具体如下。程序主要功能是从一个名单中随机抽取指定数量的人。首先需要将名单保存在一个名为“名单.txt”的文件中,并确保该文件与程序在同一目录下。程序会读取该文件中的名字列表。
以下是程序的主要步骤:
1. 用户输入需要抽取的名额数。如果输入的名额数不合理,程序会提示重新输入。
2. 程序会使用随机数生成器从名字列表中随机选择指定数量的名字。为了确保每个名字被选中的机会均等,程序使用了循环和条件判断,避免重复选择。
3. 程序会依次输出每个被抽中的名字,并在最后提示所有名字已被抽取完成。
程序的具体代码如下:
#include<iostream> #include <ctime> #include<fstream> using namespace std; int main(){ char list[100][10]; int i=0; int count; ifstream in("名单.txt"); if(!in){cout<<"请把名单.txt放到与抽签.exe的旁边,以便程序读入名字信息。\n"; system("Pause"); return 1;} do{ in>>list[i]; i++; }while(!in.eof()); i-=1; cout<<"名单读入完毕……总计读入"<<i<<"个名字。\n抽签即将开始。\n"; enter_name: cout<<"请输入需要抽出的名额数:"; cin>>count; if(count<=0||count>i){ cout<<"名字数据可能溢出,为避免程序溢出。敬请重新输入,程序即将返回……\n"; goto enter_name; } int magic[count]; for(int bug=0;bug<count;bug++)magic[bug]=0; system("Pause"); magic[0] = rand() % i ; int a,b; for(a=1;a<count;a++){ Lab:magic[a]=rand()%i; for(b=0;b<a;b++)if(magic[a]==magic[b])goto Lab; } for(int t=0;t<count;t++){ cout<<"抽出的第"<<t+1<<"个人是:"<<list[magic[t]]<<"\n"; } cout<<"所有人皆以抽出……\n程序即将返回……\n"; system("Pause"); return 0; }
希望这个程序能够满足您的需求。如果有任何问题或需要进一步的帮助,请随时联系我。详情
下载本文