注册 登录
编程论坛 C++教室

C++编投票问题,遇到困难帮忙啊

hong4781798 发布于 2010-10-05 20:12, 530 次点击
在编写投票程序时,出现了有的方法语句根本不执行,不知错误在哪里??大侠们帮忙啊
只有本站会员才能查看附件,请 登录
3 回复
#2
zaq20082010-10-05 22:23
指向指针的指针太多了 头都看晕了。。
应该改成string字符串 map容器应该能很简单的解决这个投票程序的
#3
m21wo2010-10-07 12:58
改了一下(仔细看哦!你的Vote函数和GetResult函数就写得有问题)
程序代码:
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;
}


 
#4
kspliusa2010-10-07 20:56
内存回收方面存在问题!
1