C语言 在调查中提取获胜者/-s,然后打印



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

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

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

在主要部分中,有一个名为 contestant 的结构,它将参赛者的名称作为字符串,将票数作为整数。

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

这里有一个重要的免责声明: - 除了添加包含之外,我不允许更改程序的任何其他内容。

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()的功能,所以我无法使用它。但我正在尝试找到一种方法来提取最高票数,以便我可以单独告诉程序打印具有该票数的任何人。

要理解你想在这里实现什么有点困难,所以如果你认为我误解了什么,请不要犹豫,纠正我。

首先,我假设你的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;
}



也许这就是您正在寻找的答案,但话又说回来,如果我误解了某些内容,请随时纠正我。

最新更新