我必須閱讀名稱和數字的文本文件。名稱代表虛擬選舉中的候選人(共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