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

统计选票

qin888 发布于 2010-04-24 01:16, 1482 次点击
某学校的学生会换届,有A、B、C、D、E、F六名学生竞选学生会主席,参加投票的学生代表现有15名,他们在选票上写A-F字母(大小写都可),表示投了对应候选人一票,请编一程序来统计选票。

请帮我写个程序!如果有相关的解释就更好了!!!
谢谢!!!
7 回复
#2
南国利剑2010-04-25 16:50
你可以定义一个六个元素的数组来分别存储这六名候选人的选票数。
自己试着实现一下。
#3
wow512010-04-26 13:58
这个只需要用循环+判断就可以实现了 自己动手写一下吧!
#4
boyhailong2010-04-26 16:51

程序代码:
#include <iostream>
using namespace std;
int main( )
{
  char *voters = new char[16];
  int *vote = new int[7]();
  /*char temp;*/
  /*cout << "Please input 'A to F' to vote :" << endl;*/
  for(int i = 0; i < 16; ++i)
  {
     do
     {
         cout << "Please input rignt 编号'A-F' "<< endl;
         cin >>voters[i];
     }while(voters[i]< 'A' || voters[i] > 'F');
     switch(voters[i])
     {
             case 'A':
         ++vote[0];
         break;
              case 'B':
         ++vote[1];
         break;
              case 'C':
         ++vote[2];
         break;
              case 'D':
         ++vote[3];
         break;
              case 'E':
         ++vote[4];
         break;
              case 'F':
         ++vote[5];
         break;
     }
   
  }
  for(int i =0; i < 6; ++i)
      cout << "" << i + 1 << "个选手得票为:" << vote[i] << endl;
  delete [] vote;
  delete [] voters;
}
#5
xueyuhanhai2010-04-30 20:37
楼主我对4楼的程序再 VC++6.0运行了一下,发现他对申请的整型数组没有初始化,导致了程序在统计选票时总是出现负数。是由于系统给他赋了任意的值造成的。
// saf.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream.h"


int main(int argc, char* argv[])
{
      char *voters = new char[16];//用于存放选票
      int *vote = new int[6];//用于对6个候选人的计票
      vote[0]=0;vote[1]=0;vote[2]=0;vote[3]=0;vote[4]=0;vote[5]=0;//初始化
      for(int i = 0; i < 16; ++i)
      {
         do
         {
             cout << "Please input rignt 编号'A-F' "<< endl;
             cin >>voters[i];
         }while(voters[i]< 'A' ||voters[i]>'F');
         switch(voters[i])
         {
                 case 'A':
             ++vote[0];
             break;
                  case 'B':
             ++vote[1];
             break;
                  case 'C':
             ++vote[2];
             break;
                  case 'D':
             ++vote[3];
             break;
                  case 'E':
             ++vote[4];
             break;
                  case 'F':
             ++vote[5];
             break;
         }
   
      }
      for(int j=0; j<6; ++j)//这个地方4楼用的i,我在运行时总是报错;郁闷,所以我改为了j;
          cout << "第" << j+1 << "个选手得票为:" << vote[j] << endl;
      delete [] vote;
      delete [] voters;
        printf("Hello World!\n");
        return 0;
}
比较佩服四楼。

[ 本帖最后由 xueyuhanhai 于 2010-4-30 20:42 编辑 ]
#6
最近不在2010-05-01 23:25
对于用到动态内存分配,我不太理解,这里数组长度是已知的,虽说动态内存分配,有助于自己控制,但是过多使用使用,会产生残渣,这里内存需求量也不大,不需要动态内存分配吧。对于更具体什么时候用动态内存分配,我不是很清楚,求解释!
#7
2010-05-02 11:30
   对楼主5的程序修正一下,倒数第三行 printf("Hello World!\n");应改为cout<<"Hello World!\n"<<endl; printf为C语言关键字;
#8
qin8882010-05-02 22:16
谢谢你们!!!
1