提取调查中的获胜者,然后打印

时间:2019-09-29 17:30:07

标签: c arrays

我的任务是编写投票程序的一部分。

用户输入参赛者的姓名作为命令行参数(最多9个),然后程序询问选民人数,然后询问每个选民投票给哪个选民。

我的工作是完成以下两个部分,这将提取任何人获得的最高票数,然后在第二部分中打印所有具有最高票数的参赛者。如果只有一名参赛者得分高,则将打印该名称。如果是两个或多个参赛者之间的平局,则会打印所有这些参赛者的姓名。

在主要部分中,有一个名为“竞赛者”的结构,该结构将竞赛者的名称作为字符串,并将投票数作为整数。

我是一个真正的新手,而且很挣扎,正如您在查看代码时可以立即知道的那样。

这里是一个重要的免责声明: -除了添加包含项,我不允许更改程序的其余部分。

bool count(string name)
{
    for (int i = 0; i < contestant_count; i++)
    {
        if (strcmp(name, contestant[i].name) == 0)
        {
            contestant[i].votes++;
            return true;
        }
    }
    return false;
}

void display_highest(void)
{
    int max = 0;
    for (int i = 0; i <= contestant_count -1; i++)
    {
        if (contestant[i].votes == max)
        {
            max = display_highest;
        }
    }
    for (int i = 0; i <= contestant_count -1; i++)
    {
        if (contestant[i].votes ==  display_highest)
        printf("%s \n", contestant[i].name);
    }
    return;
}

函数display_highest()未在主程序中建立,因此无法使用。但是我试图找到一种方法来提取最高的投票数,这样我就可以分别告诉程序打印具有该投票数的任何人。

1 个答案:

答案 0 :(得分:0)

在这里很难理解您要实现的目标,因此,如果您认为我误解了某些内容,请立即纠正我。

首先,我将假设您的string变量类似于const char*,因为C中没有任何string类型(至少我没有)知道的)
第二,我假设您的contestantcontestant_count变量是一些全局变量。
最后,我将假设您使用count(string name)函数为name名称的选手添加投票。

既然这样,我认为您唯一的问题就出在函数display_highest()之内。

void display_highest(void)
{
    // Here we find the maximum vote number
    int max = 0;
    for (int i = 0; i < contestant_count; i++)
    {
        // if the maximum is less than the votes
        // then update the max variable
        if (contestant[i].votes > max)
        {
            max = contestant[i].votes;
        }
    }
    // Here we display all, who has the maximum vote number
    for (int i = 0; i < contestant_count; i++)
    {
        // display contestants with 'max' vote number
        if (contestant[i].votes == max)
        {
            printf("%s \n", contestant[i].name);
        }
    }

    return;
}



也许这就是您要寻找的答案,但是如果我误解了,可以随时纠正我。