Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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");                 }