Election方法2

it2024-03-29  12

// 工程名:Election// 文件名:Election.cpp// 功能:统计候选人的投票数// 依赖文件:无

#include <string.h>#include <iostream.h>

const int n=3;const int LEN=10;

struct Person{ char *name; int count;}Leader[n];

Person *Create(const char *name,int num){ Person *p = new Person; int mn = strlen(name); p->name = new char[mn+1]; strcpy(p->name,name); p->name[mn]='/0'; p->count = num; return p;}

void Free(Person *p){ if(p){  delete []p->name;  //    delete p;    }}

Person *Copy(Person *o,Person *s){ if(o&&s){  int mn;  char *c = new char[mn=strlen(s->name)+1];  if(c==0)return o;  strcpy(c,s->name);  c[mn]='/0';  delete []o->name;  o->name = c;} return o;}

bool Init(Person *p,int n){ if(!p)return false; int count=0; char *name = new char[LEN+1]; do{  cout<<"请输入候选人名(3个):";  cin>>name;  name[LEN]=0;  if(strstr(name,"#"))break;  Person *t = Create(name,0);  Copy(&(p[count++]),t);  delete t;    }while(count<n); delete []name; return count>0;}

void Election(Person Leader[],int mn){ char* name = new char[LEN]; cout<<"请为候选人名投票,以#号结束:"; cin>>name; while(!strstr(name,"#")/*name!="#"*/){  for(int i=0;i<n;i++)   if(strcmp(Leader[i].name,name)==0)Leader[i].count++;   cout<<"请为候选人名投票,以#号结束:";   cin>>name;} delete []name; //-------------- for(int i=0;i<mn;i++)  cout<<Leader[i].name<<"得票数为,"<<Leader[i].count<<endl;}

int main(){ if(Init(Leader,n))  Election(Leader,n); for(int i=0;i<n;i++)  Free(&Leader[i]); return 0;}

/*#include <string.h>#include <iostream.h>

const int n=3;const int LEN=10;

struct Person{ char *name; int count;}Leader[n];

Person *Create(const char *name,int num){ Person *p = new Person; int n = strlen(name); p->name = new char[n+1]; strcpy(p->name,name); p->name[n]='/0'; p->count = num; return p;}

void Free(Person *p){ if(p) {  delete []p->name;  delete p;  p=0; }}

Person *Copy(Person *o,Person *s){ if(o&&s) {  int n;  char *c = new char[n=strlen(s->name)+1];  if(c==0)return o;  strcpy(c,s->name);  c[n]='/0';  delete []o->name;  o->name = c; } return o;}

bool Init(Person *p,int n){ if(!p)return false; int count=0; char *name = new char[LEN];  do{  cout<<"请输入候选人名,输入#号结束:";  cin>>name;  if(strstr(name,"#"))break;  Person *t = Create(name,0);  Copy(&p[count++],t);  delete t;  }while(count<n); delete []name; return count>0;}void Election(Person Leader[],int n){ char* name = new char[LEN]; cout<<"请为候选人名投票,以#号结束:"; cin>>name; while(!strstr(name,"#"))//name!="#" {  for(int i=0;i<n;i++)   if(strcmp(Leader[i].name,name)==0)Leader[i].count++;   cout<<"请为候选人名投票,以#号结束:";   cin>>name; } delete []name; //-------------- for(int i=0;i<n;i++)  cout<<Leader[i].name<<"得票数为,"<<Leader[i].count<<endl;}int main(){ if(Init(Leader,n))  Election(Leader,n); for(int i=0;i<n;i++)  Free(&Leader[i]); return 0;}*/

 

 

/*#include <iostream>#include <string> using namespace std;*/

/*void Election(Person Leader[],int n){char *name=NULL;cout<<"请输入候选人名:";cin>>name;while(name!="#"){for(int i=0;i<n;i++)if(strcmp(Leader[i].name,name)==0)Leader[i].count++;cout<<"请输入:";cin>>name;}for(int i=0;i<n;i++)cout<<Leader[i].name<<"得票数为,"<<Leader[i].count<<endl;}void main(){// struct *Leader=new Person;// Person *p=Create("aaa",0);Election(Leader,n);}*/ 

转载于:https://www.cnblogs.com/zlja/archive/2007/06/25/2449217.html

相关资源:数据结构—成绩单生成器
最新回复(0)