//--------------------main.c------------ #include //printf #include //c-string functions like strcmp #include "cdemo.h" // Make a main function int main(){ // Create a student student s1; if(!student_init(&s1, "freshman")){ return 1; } // Add 2-3 classes student_add_class(&s1, 3.5); student_add_class(&s1, 3.4); student_add_class(&s1, 3.6); // Print out class standing printf("class standing, %s ; GPA, %f\n", s1.class_standing, s1.gpa); } //--------------------cdemo.c------------ #include //printf #include //c-string functions like strcmp #include "cdemo.h" // Write a c-style "constructor" that checks for valid class standing int student_init(student *self, char* class_standing){ self->gpa = 0.0; self->course_count = 0; if(strcmp(class_standing, "freshman") != 0 && strcmp(class_standing, "sophmore") != 0){ return 0; } self->class_standing = class_standing; return 1; } // Write a c-style "member" function that adds a class to // the grade point average (GPA) of a student void student_add_class(student *self, float gpa){ if(self->course_count != 0){ self->gpa = ((self->gpa * (self->course_count)) + gpa) / (self->course_count + 1) ; } self->course_count += 1; } //--------------------cdemo.h------------ #include //printf #include //c-string functions like strcmp // Create a struct to represent a student typedef struct { char* class_standing; float gpa; int course_count; } student; int student_init(student *self, char* class_standing); void student_add_class(student *self, float gpa);