I have problem the program executing by negative number.
I don't know why?
can you show me what the wrong?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct mycandidate{
char name[20];
int votes;
float percentage;
} candidate;
#define number 4
void get_candidate(candidate list[]);
float count_percentage(candidate list[]);
void print_result(candidate list[],int,int);
int total(candidate list[]);
int winner(candidate list[]);
void main(){
int index=0,total1,winner1;
candidate list[50];
get_candidate(list);
total1 = total(list);
count_percentage(list);
winner1 = winner(list);
print_result(list,total1,winner1);
}
int winner(candidate list[]){
int highest,ans=0,i;
highest = list[0].votes;
for (i=0;i<number;i++){
if (list[i].votes > highest){
highest = list[i].votes;
ans = i;
}
}
return ans;
}
int total(candidate list[]){
int sum=0,i;
for (i=0;i<number;i++) {
sum = sum + list[i].votes;
}
return sum;
}
void get_candidate(candidate list[]){
int i,index=0;
for (i=0;i<3;i++){
printf("Candidate %d\n",i+1);
printf("Enter the name: \n");
scanf("%s",&list[i].name);
if (strcmp("Done",list[i].name) == 0 || strcmp("Finish",list[i].name) == 0){
break;
}
printf("Enter the number of votes:\n");
scanf("%d",&list[i].votes);
printf("\n");
index++;
}
}
float count_percentage(candidate list[]){
float temp=0.0;
int i;
for (i=0;i<number;i++){
temp = temp + (list[i].votes);
}
for(i=0;i<number;i++){
list[i].percentage = ((list[i].votes)/temp) * 100.0;
}
return 0;
}
void print_result(candidate list[],int total,int winner){
int i;
printf("\n%-15s %-15s %-15s\n", "Candidate", "Votes Received", "% of Total Votes");
for (i=0;i<number;i++){
printf("%-15s %-15d %-15.2f\n",list[i].name,list[i].votes,list[i].percentage);
}
printf("%-15s %-15d\n", "Total", total);
printf("\nThe Winner of the Election is %s\n",list[winner].name);
}

New Topic/Question
Reply



MultiQuote




|