C++编投票问题,遇到困难帮忙啊
在编写投票程序时,出现了有的方法语句根本不执行,不知错误在哪里??大侠们帮忙啊
指向指针的指针太多了 头都看晕了。。
应该改成string字符串 map容器应该能很简单的解决这个投票程序的
程序代码:candidate.h
#ifndef CANDIDATE_H
#define CANDIDATE_H
#include <string>
using namespace std;
class Person
{
public:
string name;
int number;
public:
Person(string nam,int n);
void Add();
string GetName();
int GetNumber();
Person();
};
class CVote
{
public:
Person psn[4];
int size;//候选人数
int num;//投票人数
double std;//标准
public:
CVote(string name[],int n,double std);// 候选人,总的票数和获选标准
void Vote(string name[],int m);//投票给n个人
int GetResult(string name[],int n);//返回获选人数,他们的姓名和得票数
CVote();
};
#endif
candidate.cpp
#include <iostream>
#include "candidate.h"
#include <cmath>
#include <string>
using namespace std;
Person::Person(string nam,int n)
{
name=nam;
number=n;
}
string Person::GetName()
{
return name;
}
void Person::Add()
{
number++;
}
int Person::GetNumber()
{
return number;
}
Person::Person(){}
CVote::CVote(){}
CVote::CVote(string name[],int n,double s)
{
for(int i=0;i<4;i++)
{
psn[i].name =name[i];
psn[i].number =0;
}
num=n;
std=s;
}
void CVote::Vote(string name[],int m)
{
int i,flag=0;
for(i=0;i<m;i++)
for(int j=0;j<num;j++) //问题一
{
if(name[i]==psn[j].name)
{
psn[j].Add();
//psn[i]->number ++;
flag=1;
}
}
if(flag==0)
{
cout<<"输入错误,请再次确认后进行投票!"<<endl;
}
}
int CVote::GetResult(string name[],int n)
{
int m=0;
string t[32];
int e[32];
size=n;//候选人数
int j=0;
for(int i=0;i<=n;i++)
{
if((psn[i].number /num)>=std ) //问题2
{
m++;
t[j]=psn[i].GetName();
e[j]=psn[i].GetNumber();
j++;
}
}
for(int a=0;a<m;a++)
{
cout <<"第"<< a+1 <<"个获胜者是"<<t[a] ;
cout<<",他的得票数是:" <<e[a]<<endl;
}
return m;
}
void main()
{
int m;
string name[4];
for (int i=0;i<4;i++)
{
cout <<"请输入候选人姓名:"<<endl;
cin >>name[i];
cout <<"第"<< i+1<<"个候选人姓名是:"<<name[i]<< endl;
}
CVote a(name,4,0.6);
for(int r=0;r<4;r++)
{
cout<<"请输入您的选票一共有几票:"<<endl;
cin >> m ;
string *s;
s=new string[m];
for(int l=0;l<m;l++)
{
cout << "请输入您的第"<< l+1 <<"票是:"<< endl;
cin >> s[l];
}
a.Vote(s,m);
}
for(int j=0;j<4;j++)
cout<< "候选人"<<a.psn [j].GetName()<<"的得票数是"<<a.psn [j].GetNumber() <<endl;
int w=a.GetResult(name,3);
cout <<"总共的获胜者是"<<w <<"个。"<<endl;
}