标题:C++编投票问题,遇到困难帮忙啊
只看楼主
hong4781798
Rank: 1
来 自:中国河北
等 级:新手上路
帖 子:28
专家分:0
注 册:2010-4-17
结帖率:90%
已结贴  问题点数:20 回复次数:3 
C++编投票问题,遇到困难帮忙啊
在编写投票程序时,出现了有的方法语句根本不执行,不知错误在哪里??大侠们帮忙啊
vote1.rar (278.19 KB)
搜索更多相关主题的帖子: 困难 投票 
2010-10-05 20:12
zaq2008
Rank: 2
等 级:论坛游民
帖 子:23
专家分:13
注 册:2010-8-14
得分:0 
指向指针的指针太多了 头都看晕了。。
应该改成string字符串 map容器应该能很简单的解决这个投票程序的
2010-10-05 22:23
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
得分:10 
改了一下(仔细看哦!你的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;
}


 

If You Want Something, Go Get It, Period.
2010-10-07 12:58
kspliusa
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:98
专家分:178
注 册:2009-9-27
得分:10 
内存回收方面存在问题!
2010-10-07 20:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-322055-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.084660 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved