【问题标题】:Count election's votes计算选举的选票
【发布时间】:2018-07-19 05:55:51
【问题描述】:

我正在尝试构建一个简单的程序,可以在选举期间计算选票。

程序应首先询问候选人有多少,然后创建一个 candNUMB 列表。之后,程序要求指定每个候选名称,应将其添加到相应的列表中。例如:

candidate n1: Paul
candidate n2: Frank
candidate n3: John

现在我们有 3 个列表,程序应该反复要求您投票(直到您说停止),然后将投票添加到每个列表(保罗、弗兰克、约翰)。最终程序会打印出结果。

调试显示未在此范围内声明的候选 [candNUMB]。我错过了什么?

#include <iostream>
#include <stdio.h>

using namespace std;

int main()
{
    int candNUMB = 0;
    int candidate[candNUMB] = {0};

    cout << "I can count votes during an election. Try me." << endl << endl;
    cout << "Let's start. Specify the number of candidates: ";
    cin >> candNUMB;
    cout << endl << "There are " << candNUMB << " candidates. Specify each name." << endl;

    for (int i = 0; i < candNUMB; i++)
    {
        cout << "Insert candidate n*" << i + 1 << " name: ";
        cin >> candidate[i];
    }


    return 0;
}

编辑:添加 int candNUMB = 0;

现在程序根本不会启动。

Process Returned -107374ecc

【问题讨论】:

  • candNUMB 声明在哪里?
  • 您永远不会将变量 candNUMB 设置为任何值。
  • 投反对票,错字错误(忘记声明变量)
  • 如何在int 数组中输入string?另外,零大小的数组 (candNum=0) 有什么用?我不确定也不介意,但我认为您对基础知识不清楚。
  • @fxJK -- 如果您添加了该代码,则该数组不是合法的 C++ 语法。 C++ 中的数组必须使用常量表达式而不是变量来声明。又一个新程序员被gcc 的脑死方法烧毁/愚弄,让 VLA 默认被接受。

标签: c++ c++11


【解决方案1】:

试试这个让你开始

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int candNUMB;
    string candidate[999];

当然,如果你有超过 999 个候选人,这将不起作用,但我猜你会遇到比这更重要的问题要解决。

【讨论】:

  • 没有办法 CIN 'candidate' 的值吗?
  • @fxJK 你的意思是候选人的大小?不带数组。通常的方法是使用向量。 int main() { int candNUMB; cin &gt;&gt; candNUMB; vector&lt;string&gt; candidate(candNUMB); 这会创建一个包含完全 candNUMB 条目的向量(无论该数字是多少)。在 C++ 中,向量通常优于数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多