我必须阅读名称和数字的文本文件。名称代表虚拟选举中的候选人(共7人),数字代表选民。如果选民号码不在7个候选人的范围内,它将被抛出,但仍然存储。最后,我必须列出谁赢得了选举的结果以及那里有多少被宠坏的选票。什么时候应该使用scanf的地址'&'和号键?
这是我的文本文件:
Robert Bloom
John Brown
Michelle Dawn
Michael Hall
Sean O’Rielly
Arthur Smith
Carl White
3 8 1 3 1 6 12 9 6 5 0 2 8 4
6 6 8 3 2 8 0 12 6 1 8 3 2 2
3 2 5 7 4 11 8 6 11 12 11 7 5 5
8 9 10 12 1 3 12 12 9 11 7 9 3 1
2 10 12 7 11 9 6 6 0 1 10 7 11 2
8 0 12 8 10 11 2 2 8 4 2 12 3 2
9 1 4 8 8 7 7 4 12 2 10 10 9 4
12 9 3 12 0 4 8 0 6 5 9 0 5 3
11 6 0 3 0
这是我在哪里卡住了有关如何在扫描这些正确
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
FILE * data;
int spoilt=0;
typedef struct
{
int votes;
char name[20];
}candidates;
void initialize(candidates *electionCandidates, FILE *data)
{
int i;
for(i=0; i<7; i++)
{
fscanf(data, "%[^\n]%*c", electionCandidates[i].name);
printf("%s\n", electionCandidates[i].name);
electionCandidates[i].votes=0;
}
}
int processVotes(candidates *electionCandidates, FILE *data)
{
int i; //tallying votes
int voter;
for (i = 0; i< 365; i++)
{
fscanf(data, "%d", voter);
if (voter <= 7&& voter > 0)
electionCandidates[voter-1].votes++;
else
spoilt++;
}
//catcher to grab winner
int maxValue, winner=0;
maxValue = electionCandidates[0].votes;
for(i = 0; i < 7; i++)
{
if(maxValue < electionCandidates[i].votes)
{
maxValue = electionCandidates[i].votes;
electionCandidates[winner] = electionCandidates[i];
}
}
return electionCandidates[winner], maxValue;
}
void printResults(candidates *electionCandidates)
{
printf("%s won the election with a total of %d votes.\n There was a total of %d spoilt"
electionCandidates[winner].name, maxValue, spoilt);
}
int main() {
data = fopen("elections.txt","r");
candidates electionCandidates[7];
initialize(electionCandidates, data);
processVotes(electionCandidates, data);
printResults(electionCandidates);
fclose(data);
return 0;
}
它甚至编译?你在做什么这个'返回选举候选人[赢家],maxValue;'??你想要返回2个值吗? – Arpit 2014-09-04 23:22:25
这是我想我即将搞砸的地方。我试图找到选举的赢家并返回结构数组中的位置的值 – Acehilm 2014-09-04 23:23:35
只需返回获胜者的索引。用这个,你可以直接访问数组的名字和票数 – Arpit 2014-09-04 23:26:58