Can someone look at my code because my average doesn\'t work. Theaverage sometim
ID: 3618710 • Letter: C
Question
Can someone look at my code because my average doesn't work. Theaverage sometimes works but then prints random numbers. Thanks.#include <stdio.h>
#include <stdlib.h>
struct grade
{
int student_id;
double hw1;
double hw2;
double quiz1;
double quiz2;
double midterm;
double final;
double overall_grade;
char letter_grade;
};
int main()
{
srand(time(0));
struct grade sgrade[15];
double average[7];
double sum[7];
int i;
printf(" # HW1 HW2 Quiz1 Quiz2 Midterm Final Total Grade");
for(i=0;i<15;i++)
{
//Generates random numbersfrom 50-100
sgrade[i].hw1 =50+rand()%50;
sgrade[i].hw2 =50+rand()%50;
sgrade[i].quiz1 =50+rand()%50;
sgrade[i].quiz2 =50+rand()%50;
sgrade[i].midterm =50+rand()%50;
sgrade[i].final =50+rand()%50;
//Calculate the overall gradefor each student
sgrade[i].overall_grade =(sgrade[i].hw1 + sgrade[i].hw2)*.05 + (sgrade[i].quiz1 +sgrade[i].quiz2)*.10 + (sgrade[i].midterm)*.30 +(sgrade[i].final)*.40;
//Calculate the sum for eachcategory
sum[1] += sgrade[i].hw1;
sum[2] += sgrade[i].hw2;
sum[3] += sgrade[i].quiz1;
sum[4] += sgrade[i].quiz2;
sum[5] +=sgrade[i].midterm;
sum[6] += sgrade[i].final;
sum[7] +=sgrade[i].overall_grade;
printf(" %d %.f %.f %.f %.f %.f %.f %.f",i,sgrade[i].hw1,sgrade[i].hw2,sgrade[i].quiz1,sgrade[i].quiz2,sgrade[i].midterm,sgrade[i].final,sgrade[i].overall_grade);
sgrade[i].letter_grade =sgrade[i].overall_grade;
if(sgrade[i].letter_grade>= 90)
printf(" A");
elseif(sgrade[i].letter_grade >= 80)
printf(" B");
elseif(sgrade[i].letter_grade >= 70)
printf(" C");
elseif(sgrade[i].letter_grade >= 60)
printf(" D");
else
printf(" F");
}
//Calculates the average for eachassignment
average[1] = sum[1]/15;
average[2] = sum[2]/15;
average[3] = sum[3]/15;
average[4] = sum[4]/15;
average[5] = sum[5]/15;
average[6] = sum[6]/15;
average[7] = sum[7]/15;
printf(" Average: %.f %.f %.f %.f %.f %.f %.f",average[1],average[2],average[3],average[4],average[5],average[6],average[7]);
system("pause");
return(0);
}
Explanation / Answer
do this use overall_grade get rid of sgrade[i].letter_grade completely if(sgrade[i].overall_grade >=90) printf(" A"); elseif(sgrade[i].overall_grade >= 80) printf(" B"); elseif(sgrade[i].overall_grade >= 70) printf(" C"); elseif(sgrade[i].overall_grade >= 60) printf(" D"); else printf(" F"); }